Matlab Meshgrid和double for循环不会产生相同的矩阵,为什么?

Matlab Meshgrid和double for循环不会产生相同的矩阵,为什么?,matlab,Matlab,我试图计算表达式f=2y expz对于不同的z和y值可以采用的所有值。y和z是长度为M的两个向量。我想知道为什么生成表达式f的两种方法产生不同的结果 使用网格网格: [Y,Z] = meshgrid(y,z); argument = 2*Y-exp(Z); 和双循环 argument_new = zeros(M,M); for i = 1:length(y) for j = 1:length(z) argument_new(i,j) = 2*y(i)-exp(z(j))

我试图计算表达式f=2y expz对于不同的z和y值可以采用的所有值。y和z是长度为M的两个向量。我想知道为什么生成表达式f的两种方法产生不同的结果

使用网格网格:

    [Y,Z] = meshgrid(y,z);
argument = 2*Y-exp(Z);
和双循环

argument_new = zeros(M,M);
for i = 1:length(y)
    for j = 1:length(z)
    argument_new(i,j) = 2*y(i)-exp(z(j));
    end
end
任何提示都将不胜感激

归咎于:

MESHGRID与NDGRID类似,只是前两个输入的顺序不同 输出参数被切换,即,[X,Y,Z]=MESHGRIDx,Y,Z 生成与[Y,X,Z]=NDGRIDy,X,Z]相同的结果

解决方案:使用,不进行切换,因此更自然:

[Y,Z] = ndgrid(y,z);
argument = 2*Y-exp(Z);
或者在代码中,在meshgrid之后添加一个转置操作:argument=argument'

归咎于:

MESHGRID与NDGRID类似,只是前两个输入的顺序不同 输出参数被切换,即,[X,Y,Z]=MESHGRIDx,Y,Z 生成与[Y,X,Z]=NDGRIDy,X,Z]相同的结果

解决方案:使用,不进行切换,因此更自然:

[Y,Z] = ndgrid(y,z);
argument = 2*Y-exp(Z);
或者在代码中,在meshgrid之后添加一个转置操作:argument=argument'

这是因为meshgrid创建“反转”方向的方式。我找不到合适的词,但这里有一个用代码演示的示例。您可以看到,如果取消注释选项2并使用参数_newj,I而不是参数_newi,j,则两个矩阵都是相等的,正如使用isequal获得的一样

这是因为meshgrid创建“反转”方向的方式。我找不到合适的词,但这里有一个用代码演示的示例。您可以看到,如果取消注释选项2并使用参数_newj,I而不是参数_newi,j,则两个矩阵都是相等的,正如使用isequal获得的一样


它们是一样的,你应该在Matlab中转置任意一个,或者你可以在for循环中用j替换i,反之亦然。它们是一样的,你应该在Matlab中转置任意一个,或者你可以在for循环中用j替换i,反之亦然。

我想@chappjc会很乐意回答这个问题:—呸!哈哈,唉,我在一个毫无意义的复习队列中艰难前行!是的。。。meshgrid确实把我搞砸了好几次+1.@chappjc-Hmmm。。。你在找帽子吗?@rayryeng我非常喜欢Android。。。但不是帽子:-很好的广告,我不知道!我想@chappjc会愿意回答这个问题:-呸!哈哈,唉,我在一个毫无意义的复习队列中艰难前行!是的。。。meshgrid确实把我搞砸了好几次+1.@chappjc-Hmmm。。。你在找帽子吗?@rayryeng我非常喜欢Android。。。但这顶帽子可不怎么样:-广告不错,我不知道!。但是这里有个问题。那么@user3748876下面的答案对你有帮助吗?如果是,请将其标记为已接受。谢谢但是这里有个问题。那么@user3748876下面的答案对你有帮助吗?如果是,请将其标记为已接受。谢谢