for循环的基础知识

时间:2012-02-27 15:58:24

标签: 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)) && (Xstar==X(i))
                  w=1;
              else
                  w=2;
              end
              **p(i,j)=w**
         end
     end

2 个答案:

答案 0 :(得分:2)

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

试试这个:

...
    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编辑器窗口中点击,应该出现一个红点)
  • F5 启动脚本,它将在您的断点处停止
  • F10 逐行逐步执行您的脚本,同时您可以检查变量的值,例如在您的工作区窗口中

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

答案 1 :(得分:1)

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