Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB-使用for循环查找x^2+;Y_Matlab_Loops - Fatal编程技术网

MATLAB-使用for循环查找x^2+;Y

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循环:

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;
其他答案的问题:

  • @与初始示例相比,inigo的回答将改变
    x
    y
    的顺序(使用
    meshgrid
    而不是
    ndgrid
  • @NominSim的答案必须要付出额外的努力才能从
    x
  • @mecid的答案必须分别计算列和行(在MATLAB中也没有++操作符)
  • 由于它产生了一些讨论,从文档(在MATLAB中,而不是在线文档中)中可以看出
    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