【问题标题】:Copying array of numbers in a structure to Cell Array-- Matlab将结构中的数字数组复制到 Cell Array-- Matlab
【发布时间】:2026-01-01 10:25:02
【问题描述】:

我有一个包含字符串和数字的结构。我可以暴力地将输入结构的每个元素复制到我的单元格数组中。当我尝试使用数组式语法时,出现“来自非单元格数组对象的单元格内容引用”错误。

这行得通:

C1{3,2} = num(1,1);
C1{3,3} = num(2,1);
C1{3,4} = num(3,1);
C1{3,5} = num(4,1); 
C1{3,6} = num(5,1);

但这没有(为什么?):

C1{3,:} = num2cell(num{:,1});

【问题讨论】:

  • 我也试过不使用 num2cell 进行类型转换。

标签: arrays excel matlab


【解决方案1】:

引发错误是因为您正在索引 double 数组,就好像您正在取消引用 cell 数组(即使用 {} 而不是 ()),这是不允许的。

在修复引用问题后,Matlab 将抛出两个输出错误,因为语法 C1{3,:} 导致赋值左侧的 comma-separated list 扩展;使用()cell 数组分配给cell 数组。

之后,您将收到尺寸不匹配的信息,因为 C1(3,:)1x6 而不是 5x1num

所有的解释,正确的分配是

C1(3,2:6) = num2cell(num(1:5,1).'); %'

转置 .' 似乎不是必需的,因为我的 R2015a 安装本身会进行维度强制,但我喜欢明确说明。

【讨论】:

  • 它没有用。我将 num() 矩阵第一列中的 5 个值复制到 C1 {3,2:6} 第三行中的 5 个空格中。第一行第一列由标题组成。因此,我开始填充 column-index = 2
  • @juanmatus 新代码怎么样:我将num2cell(num(5,1).'); 更改为num2cell(num(1:5,1).');