gpt4 book ai didi

matlab - 为什么 Matlab 中的元胞数组结构表现不佳并不断构建向量?

转载 作者:行者123 更新时间:2023-12-04 13:08:05 26 4
gpt4 key购买 nike

假设我有两个简单的向量;

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com