在 matlab 中组合相应的数组和元胞数组值时下标赋值维度不匹配

Subscripted assignment dimension mismatch when combining corresponding array and cell array values in matlab

我有一个数组和一个元胞数组,维度相同:A 是一个 1x2492 双精度数组,B 是一个 1x2492 元胞元胞数组。我想创建一个新的元胞数组,将 A 中的值分配给 B 的相应列值。这是我的代码:

for n = 1:numel(B)
    newArray(n) = [A(n),B{n}(2)];
    newCellArray{n} = newArray;
end

当我运行代码时,我得到了错误'Subscripted assignment dimension mismatch.'

我认为这是因为 B 中的某些单元格有多个列,代码循环无法识别我想将 A 的相同值分配给单元格中的所有值。

例如,如果 B 的单元格 1 包含:

2      2355
23     1293
37     1222

我希望我的代码循环将 A 的相应第一个值分配给 2355、1293 和 1222。所以基本上,我想要一个这样的新单元格:

1      2355
1      1293
1      1222

我意识到这是一个非常令人困惑的解释,但我希望它是有道理的。我们将不胜感激 - 非常感谢!

尝试:

newCellArray = cell(numel(B),2);
for n = 1:numel(B)
    lenB = length(B{n}(2));
    newA = repmat(A(n),lenB);
    newArray = [newA,B{n}(2)];
    newCellArray = [newCellArray; newArray];

end

我不太确定您要做什么,但下面的代码会将 A(ii) 的值分配给 B{ii} 第一列中的每个元素。我只是根据你的例子说的,但你的解释真的不清楚..

C = B;
for ii=1:numel(C)
    C{ii}(:,1)=A(ii);
end

并且您在 newArray(n) = [A(n),B{n}(2)]; 上收到错误,因为您试图将向量分配给单一维度。尝试 a(1) = [1 2],你仍然会得到一个错误,这与你的单元尺寸等无关。a(1,:)=[1 2],但是,如果 a 的第二个维度是 2,可能会起作用.