使用:in赋值和for循环之间的区别

时间:2014-01-21 06:31:56

标签: matlab

我写了一个简单的for循环:

>> for m=1:3
p=m;
end
>> whos
  Name       Size                   Bytes  Class

  m          1x1                        8  double array
  p          1x1                        8  double array

但是当我尝试为一个范围创建一个相同类的数据类型并检查你现在存储的变量不是1x1大小时:

>> k=1:256;

>> whos
  Name       Size                   Bytes  Class

  k          1x256                   2048  double array
  m          1x1                        8  double array
  p          1x1                        8  double array

为什么m和k的变量大小之间存在差异?如果我理解正确1x1大小(变量'm')意味着它是1x1顺序的矩阵。那么为什么k变成1x256顺序?

1 个答案:

答案 0 :(得分:1)

问题是因为您将k声明为256元素向量。 :运算符创建了一个向量,例如

a = 1:5

    a == [1, 2, 3, 4, 5]

m一样,你在for循环中创建它,它的工作方式不同。 m的值从1到3循环(即它们遍历向量[1,2,3]),但在任何一个点m只是一个标量(在循环结束时它有一个标量)值3)因此,你m是1x1。

所以,如果你以相反的方式做到这一点,那么你将得到:

for k = 1:256为您提供1x1 k

m = 1:3将为mm == [1,2,3]

提供1x3向量