Arrays 在matlab中组合相应数组和单元格数组值时下标赋值维数不匹配
我有一个数组和一个具有相同维数的单元格数组:a是一个1x2492双数组,B是一个1x2492单元格数组。我想创建一个新的单元格数组,将a中的值分配给B的相应列值。下面是我的代码:Arrays 在matlab中组合相应数组和单元格数组值时下标赋值维数不匹配,arrays,matlab,for-loop,cell,cell-array,Arrays,Matlab,For Loop,Cell,Cell Array,我有一个数组和一个具有相同维数的单元格数组:a是一个1x2492双数组,B是一个1x2492单元格数组。我想创建一个新的单元格数组,将a中的值分配给B的相应列值。下面是我的代码: for n = 1:numel(B) newArray(n) = [A(n),B{n}(2)]; newCellArray{n} = newArray; end 当我运行代码时,出现了错误“下标赋值维度不匹配” 我认为这是因为B中的某些单元格有多列,而代码循环没有识别出我想要为单元格中的所有值分配相同
for n = 1:numel(B)
newArray(n) = [A(n),B{n}(2)];
newCellArray{n} = newArray;
end
当我运行代码时,出现了错误“下标赋值维度不匹配”
我认为这是因为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)=[12]
仍然会得到一个错误,这与单元格的尺寸无关,等等<但是,如果a
的第二维度为2,则code>a(1,:)=[12]
可能会起作用。您好,感谢您抽出时间帮助我。我尝试了这个,但仍然得到了相同的错误消息…有什么想法吗?numel(B)打印什么,newArray(1)=[A(1),B{1}(2)];print?numel(B)打印2492,这是B中的单元数,newArray(1)=[A(1),B{1}(2)];打印错误消息:“下标赋值维度不匹配。”A(1)和B{1}(2)的输出是什么?我假设它们不是您期望的大小,也不是您需要的维度,或者newArray(n)不是您需要的维度。是的,基本上A(n)始终是一个值。然而,B{n}(2)有时是多个值。B中的单元格数与A中的值数相同,但有时在B的一个单元格中有多个值。我的问题是:有没有任何方法可以让matlab为每个对应的B值编码相同的a值,即使在B的单元格中有多个值?非常感谢-这非常适合我的需要。