在 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,可能会起作用.
我有一个数组和一个元胞数组,维度相同: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,可能会起作用.