为什么 x={1:4} return 一个 1x1 单元格而 x={1 2 3 4} return 一个 1x4 单元格? [MATLAB]

Why does x={1:4} return a 1x1 cell and x={1 2 3 4} return a 1x4 cell? [MATLAB]

为什么 x={1:4} return 一个 1x1 单元格x={1 2 3 4} return 一个 1x4 单元格?

我想使用 x={1:n} 语句获得 1xn 单元格。原因是我需要构造一个struct

 struct('field1', [], 'field2', x, 'field3', ' message')

这样的结构是

问题是如果我使用 x={1:4},结构会变成

但我希望结构看起来像第一张图片。我需要使用 x={1:n} 语句,因为 n 可能非常大。

谁能提出解决方案?提前谢谢你。

由于 1:4 给出了数值向量 [1 2 3 4],赋值 x = {1:4}x = {[1 2 3 4]} 相同。所以 x 是一个包含 1×4 向量的 1×1 元胞数组。

另一方面,x = {1 2 3 4} 创建一个 1×4 的数字元胞数组。

要创建类似 x = {1 2 3 4} 的不同大小 n,您可以先创建数值向量 1:n,然后应用 num2cell,这会将每个数字放在一个单独的单元格:

x = num2cell(1:n);