Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.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 使用:in赋值和in for循环之间的区别_Matlab - Fatal编程技术网

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

Matlab 使用:in赋值和in for循环之间的区别,matlab,Matlab,我写了一个简单的for循环: >> for m=1:3 p=m; end >> whos Name Size Bytes Class m 1x1 8 double array p 1x1 8 double array 但当我尝试为某个范围创建同一类的数据类型并检查您现在存储的变

我写了一个简单的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顺序呢?

问题在于您将
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
将为
m
m==[1,2,3]

在命令提示符下键入
k
,查看响应是什么。
m
是一个单值,因此它的大小为单
。当您创建
k
时,您正在创建一个包含
256个双字节的数组
——由于每个
double
都是
8个字节
,您最终得到的是
2048个字节
——这应该是您所期望的。在
for
语句中的语义与其在裸赋值中的用法非常不同。
m
将是单值(
1x1
)实际上位于末尾,因为它在迭代时接受向量
1:3
的值。我看到编辑正在接近它。但是,正如问题中所问的那样,关于
k
,仍然存在一些困惑(这与目前的答案不同)。如果
k=1:256
(如问题中所示),它将是
1x256
,而不是
1x1
@t。答案的第一句话说明
k
是1x256,然后解释原因。1x1只是说明OP中两种方法之间差异的一个示例。