MATLAB-使用for循环查找x^2+;Y
我有两个类似这样的for循环:MATLAB-使用for循环查找x^2+;Y,matlab,loops,Matlab,Loops,我有两个类似这样的for循环: for x = 1:1:15 for y = 1:1:15 values(x,y) = x^2 + y end end for x = 0:0.1:15 for y = 0:0.1:15 ????? = x^2 + y end end 这允许我计算x^2+y,如果x和y是整数,那么它们的每一个组合 但是,如果我也要计算小数的x^2+y呢 比如说: for x = 1:1:15 for y
for x = 1:1:15
for y = 1:1:15
values(x,y) = x^2 + y
end
end
for x = 0:0.1:15
for y = 0:0.1:15
????? = x^2 + y
end
end
这允许我计算x^2+y,如果x和y是整数,那么它们的每一个组合
但是,如果我也要计算小数的x^2+y呢
比如说:
for x = 1:1:15
for y = 1:1:15
values(x,y) = x^2 + y
end
end
for x = 0:0.1:15
for y = 0:0.1:15
????? = x^2 + y
end
end
有谁能帮我找到一种方法,可以计算x^2+y的所有可能性,如果x和y是小数,那么就不能再用作索引引用了?为什么不循环1到151之间的整数,然后计算要使用的小数?然后您仍然可以使用索引引用 i、 e (如果我的语法有点不正确,请原谅,我已经有一段时间没有使用MATLAB了) 使用,matlab内置于二维矩形网格中,无需循环
[y x]=meshgrid(0:0.1:15)
values=x.^2+y
要将此可视化:
imagesc(values);
title('values=x^2+y'); axis square
xlabel('x'); ylabel('y'); colorbar;
axis xy;
set(gca,'XTick',1:10:151,'YTick',1:10:151);
set(gca,'XTickLabel',0:1:15,'YTickLabel',0:1:15);
编辑:
mdgrid
也很好。唯一需要注意的是[y x]=meshgrid…
是相同的[x y]=ndgrid…
使用:
[x y] = ndgrid(0:0.1:15);
values = x.^2 + y;
其他答案的问题:
x
和y
的顺序(使用meshgrid
而不是ndgrid
)x
meshgrid
和ndgrid
之间的差异:
meshgrid
与ndgrid
类似,只是前两个输入和输出参数的顺序被切换(即,[X,Y,Z]=meshgrid(X,Y,Z)
产生与[Y,X,Z]=ndgrid(Y,X,Z)
相同的结果我喜欢使用ndgrid
而不是meshgrid
。我已经多次遇到笛卡尔坐标与行/列的问题。这里有一个很好的链接,解释了ndgrid
和meshgrid
之间的区别:请注意,我对@inigo的答案的评论是自从我回答后,他从[xy]=meshgrid
改为[yx]=meshgrid
,这与[xy]=ndgrid
+1简单、直截了当的答案是一样的。(我也喜欢可视化的使用……那去哪里了?)简单而好的答案。我更喜欢轴xy
,而不是更复杂的集(gca,'ydir','normal')
。更短…感谢您的评论,我同意轴xy
更短更好。我将在。。。
x = 0:.1:15;
y = 0:.1:15;
values = zeros(numel(x),numel(y));
for xnum = 1:numel(x)
for ynum = 1:numel(y)
values(xnum,ynum) = x(xnum)^2 + y(ynum);
end
end