Matlab循环将行分配给元胞数组
Matlab loop to assign rows to cell array
我有一个大元胞数组 A=cell(a,b,c,d)
和一个行向量 B
,尺寸为 1
-by-b
。
我想在 MATLAB 中构建一个执行以下操作的循环:
for i=1:n
B = Calculate_row(input1,input2) %this is a function that creates my B row
A{a,:,c,i} = B(:)
end
无论如何,如果我尝试这样做 A{a,:,c} = B(:)
,我会收到以下错误:
Expected one output from a curly brace or dot indexing expression, but there were b results.
如果我尝试 A(a,:,c) = B(:)
我会收到以下错误:
Conversion to cell from double is not possible.
有办法吗? (我知道一种不太优雅的方法可能是将每个值分别分配给单元格,但我不想这样做)。
一种方法是制作 B
元胞数组,然后利用 comma-separated-lists:
B_cell = num2cell(B);
[A{a,:,c}] = B_cell{:} %// or [A{a,:,c,i}] = B_cell{:} if tim's comment is correct
查看 Loren Shure 的文章 Deal or No Deal and also this answer 了解更多信息。
您的语法问题 A{a,:,c} = B(:)
是 RHS(即 B(:)
)只是一个单一矩阵,而 LHS 是 b
的逗号分隔列表结果。因此,您基本上是在请求将 1
输出分配给 b
变量,而 MATLAB 不喜欢这样,因此也会出现错误消息。
A(a,:,c) = B(:)
的问题在于,使用 ()
returns 对元胞数组进行索引时,您不能只分配一个矩阵(即 B(:)
)到单元格数组,因此你第二个错误。
我有一个大元胞数组 A=cell(a,b,c,d)
和一个行向量 B
,尺寸为 1
-by-b
。
我想在 MATLAB 中构建一个执行以下操作的循环:
for i=1:n
B = Calculate_row(input1,input2) %this is a function that creates my B row
A{a,:,c,i} = B(:)
end
无论如何,如果我尝试这样做 A{a,:,c} = B(:)
,我会收到以下错误:
Expected one output from a curly brace or dot indexing expression, but there were b results.
如果我尝试 A(a,:,c) = B(:)
我会收到以下错误:
Conversion to cell from double is not possible.
有办法吗? (我知道一种不太优雅的方法可能是将每个值分别分配给单元格,但我不想这样做)。
一种方法是制作 B
元胞数组,然后利用 comma-separated-lists:
B_cell = num2cell(B);
[A{a,:,c}] = B_cell{:} %// or [A{a,:,c,i}] = B_cell{:} if tim's comment is correct
查看 Loren Shure 的文章 Deal or No Deal and also this answer 了解更多信息。
您的语法问题 A{a,:,c} = B(:)
是 RHS(即 B(:)
)只是一个单一矩阵,而 LHS 是 b
的逗号分隔列表结果。因此,您基本上是在请求将 1
输出分配给 b
变量,而 MATLAB 不喜欢这样,因此也会出现错误消息。
A(a,:,c) = B(:)
的问题在于,使用 ()
returns 对元胞数组进行索引时,您不能只分配一个矩阵(即 B(:)
)到单元格数组,因此你第二个错误。