作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有两个简单的向量;
vec1=[1,2,3];
vec2=[4,5,6];
现在我用它们制作一个单元阵列。
cellArray1={vec1,vec2}
如果我想创建一个 2x3 的数值数组,这很简单。
[vec1;vec2]
%or
[cellArray1{1};cellArray{2}]
但是,要从上面制作 2x3 单元阵列,它的行为并不符合预期。
{vec1(1,:);vex2(1,:)}
{cellArray1{1};cellArray1{2}}
{cellArray1{1}(1,:),cellArray1(1,:)}
没有给我一个 2x3 的单元阵列。为什么会这样,以及如何以非常正式和有效的方式制作一个 2x3 元胞数组,其中每个条目只包含 double 值。我不认为使用
cell2mat
或编写代码以使用
{~,~,~;~,~,~}
编写另一个 dot m 文件运行生成的新文件会创建感兴趣的单元格数组,这是很好的做法。
最佳答案
这是设计使然。
元胞数组可以包含任何东西,因此该语言没有被优化来解释事物是相同的形状。
如果 size(vec1(1,:))
是 1x1 和 size(vex2(1,:))
是 1x50,以下应该仍然有效(与 []
不同)。
{vec1(1,:);vex2(1,:)}
如果
cellArray1{1}
是图柄和
cellArray1{2}
是一个字符串,以下应该仍然有效(与
[]
不同)。
{cellArray1{1};cellArray1{2}}
请参阅第一个示例以了解为什么这适用于任何形状:
{cellArray1{1}(1,:),cellArray1(1,:)}
元胞数组接受很多东西作为输入,没问题。因此,他们不能假设您输入来创建单元格的内容是
1x3
数值数组,因此它们不能像它那样运行并创建 2x3 元胞数组。即使他们可以检查并相应地采取行动,那么您的行为也会不一致,具体取决于输入的数值向量的长度。
关于matlab - 为什么 Matlab 中的元胞数组结构表现不佳并不断构建向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68437429/
我是一名优秀的程序员,十分优秀!