作业帮 > 综合 > 作业

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

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/15 14:11:41
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,
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