mhl516 发表于 2006-9-10 15:40

循环的问题,请高手指点

function z=f(x)
l=;
m=;
n=;
%for k= 1:40
%li(k)=(l(k)+x(1))*cos(x(5))*cos(x(6))
%mi(k)=(m(k)+x(2))*cos(x(4))*cos(x(6))
%ni(k)=(n(k)+x(3))*cos(x(4))*cos(x(5))
%end

for k=1:40
r(k)=sqrt((l(k)-x(1)*cos(x(2)))^2+(m(k)-x(1)*sin(x(2)))^2+(n(k)-x(1)^2)^2)

x0=;=fminunc(@ziyouqumian_biaozhunfangcheng,x0);
end

这是求点到曲面的最短距离的函数,我本来想把每个r的最小值都求出来,再找出max(r)-min(r),可是怎样才能在循环中执行commandwindow中的命令x0=;=fminunc(@ziyouqumian_biaozhunfangcheng,x0)啊?小弟不懂,请高手指教

[ 本帖最后由 xuebx 于 2006-9-11 09:38 编辑 ]

mhl516 发表于 2006-9-10 15:43

曲面是 x(u,w)=u*cos(w)
             y(u,w)=u*sin(w)
             z=u^2
求离散点到曲面的最短距离中的最大值与最小值之差,请大家指教

mhl516 发表于 2006-9-10 16:26

function r=f3(x)
r=sqrt((10.023-x(7)*cos(x(8)))^2+(0.012-x(7)*sin(x(8)))^2+(100.02-x(7)^2)^2)
commandwindow中执行的命令是x0=;=fminunc(@ziyouqumian_biaozhunfangcheng,x0),这是第一个点的距离曲面的最短距离,我想用循环来依次求出这四十个点到曲面的距离,最后再求出最大值与最小值的差,大家帮忙想想办法

feifeifool 发表于 2006-9-10 18:50

把下面的程序给你参考一下,逻辑上没有什么问题,现在最关键的问题在于fminunc这个函数的使用上。
对于这类我通常是采用inline来解决的,不知道有没有高人有其他更好的方法。我一直对函数句柄理解的不是很明白,不知道函数句柄到底能不能解决这个问题。
clc;clear;
l=;
m=;
n=;
tem_v=[];
x0=;
k=1;
result=[];
result_fval=[];
for k=1:40
    x=sym('');
    r=sqrt((l(k)-x(1)*cos(x(2)))^2+(m(k)-x(1)*sin(x(2)))^2+(n(k)-x(1)^2)^2);
    f=inline(r);
    x0=;
    =fminunc(f,x0);
    result(k,:)=x;
    result_fval(k,:)=fval;
end
distance=max(result_fval)-min(result_fval);
disp(distance);

mhl516 发表于 2006-9-10 20:01

我好好研究一下,谢谢啦

MVH 发表于 2006-9-11 08:36

=fminunc(fun,x0,options,p1,p2,…)

可以通过p1 p2传递变量

huanghua 发表于 2006-10-10 09:03

曲面參數方程

請問各位高手如何確定任意曲面的參數方程啊?
页: [1]
查看完整版本: 循环的问题,请高手指点