Matlab for循环的基础知识

Matlab for循环的基础知识,matlab,math,Matlab,Math,我在Stackfriends的帮助下更正了代码,如果其他人有类似的堆栈,请参阅粗体部分。 算术上,我应该取w=1,为什么取w=2?非常感谢 X=linspace(0,10,6); Y=linspace(0,20,5); Xstar=0; Ystar=0; **p=0;** for i=1:length(X)-1 for j=1:length(Y)-1 if (Ystar==Y(j)) && (Xsta

我在Stackfriends的帮助下更正了代码,如果其他人有类似的堆栈,请参阅粗体部分。 算术上,我应该取w=1,为什么取w=2?非常感谢

X=linspace(0,10,6);
Y=linspace(0,20,5);
    Xstar=0;
    Ystar=0;
    **p=0;**
     for i=1:length(X)-1
         for j=1:length(Y)-1
              if (Ystar==Y(j)) && (Xstar==X(i))
                  w=1;
              else
                  w=2;
              end
              **p(i,j)=w**
         end
     end

只是一个猜测,但我认为您希望向后循环数组。您应该使用调试器并逐步查看它

试试这个:

...
    for i=length(X):-1:1
         for j=length(Y):-1:1
              if (Ystar==Y(j)) && (Xstar==X(i))
                  w=1;
              else
                  w=2;
              end
         end
     end
下面是你应该做什么来解决这个问题

  • 在循环的开始处设置断点(在源代码旁边的matlab编辑器窗口中,klick会出现一个红点)
  • 按F5启动脚本,它将在断点处停止
  • 按F10键通过脚本逐行执行,同时可以检查变量的值,例如在工作区窗口中

(我希望这些指令仍然有效,我有一个相当旧的MATLAB版本)

作业
w=1仅在第一个循环上完成;每次之后,
X(i)
Y(j)
都不等于0,因此
w=2。循环完成后,您将看到的是
w=2
,因为您没有存储所有迭代的值。

我的问题仍然在代码上方。我想知道为什么我得到了一个数学上不正确的输出?错误可能会留在if循环中。您必须解释所期望的输出类型。在没有任何信息的情况下,我们如何猜测“数学上不正确”的含义?特别是,为什么您认为此代码应该返回w=1?在我看来,当i=1和j=1时,w=1分支只有在开始时才被取对。@E先生,我已经写过了。如果网格点(X(i),Y(j))等于给定点(Xstar,Ystar),那么我应该得到w=1,而不是w=2。我想我们不能相互理解。无论如何,谢谢。@user1018331,更多的是关于我们不能读懂你的思想,你也不能表达自己。然后我得到w=0,但我想我明白了。感谢您的友好回复。@user1018331:
w
执行此操作后应为
1
。再次感谢,我是在您的帮助下获得的:)