Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在matlab中组合相应数组和单元格数组值时下标赋值维数不匹配_Arrays_Matlab_For Loop_Cell_Cell Array - Fatal编程技术网

Arrays 在matlab中组合相应数组和单元格数组值时下标赋值维数不匹配

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中的某些单元格有多列,而代码循环没有识别出我想要为单元格中的所有值分配相同

我有一个数组和一个具有相同维数的单元格数组:a是一个1x2492双数组,B是一个1x2492单元格数组。我想创建一个新的单元格数组,将a中的值分配给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的单元格中有多个值?非常感谢-这非常适合我的需要。