matlab关于用arrayfun取代for循环的问题

问题描述:

matlab关于用arrayfun取代for循环的问题
有个函数 f=x+y+(w-z)^2,x=1:1:2;y=2:1:5;w=1:2:5;z=1:1:6; 我想求出f里面的最大值,和对应的x,y,w,z值,如果不用for 循环,可以怎么写?
我大概的想法是
f=@(x,y,z,w) x+y+(z-w)^2;
[X,Y,Z,W]=ndgrid(1:2,2:5,1:2:5,1:6);
q=arrayfun(f,X,Y,Z,W);
但下面该怎样写去求出最大值和对应的x,y,z,
1个回答 分类:综合 2014-10-18

问题解答:

我来补答
xx = X(:);
yy = Y(:);
zz = Z(:);
ww = W(:);
qq = q(:);
maxq = max(qq)
index = find(q == maxq);
x = xx(index)
y = yy(index)
z = zz(index)
w = ww(index)
f(x,y,z,w) % 验证后和maxq是一致的,32
 
 
展开全文阅读
剩余:2000