MATLAB错误是什么;此赋值所需的标量结构“;在这份声明中提到了什么?
我有一个结构,MATLAB错误是什么;此赋值所需的标量结构“;在这份声明中提到了什么?,matlab,data-structures,cell-array,Matlab,Data Structures,Cell Array,我有一个结构,space\u averaged\u data,它有一个成员Ps,它被定义为具有可变长度的单元数组。在创建如下所示的结构后,我将值分配给此单元格数组(为了清晰起见,我省略了其他结构字段): 如果num\u p的值为1(即,单元格数组不是数组),则一切正常。但是,如果num\u p的值大于1,我会得到以下错误: Scalar structure required for this assignment. Error in: space_averaged_data.Ps{p}
space\u averaged\u data
,它有一个成员Ps
,它被定义为具有可变长度的单元数组。在创建如下所示的结构后,我将值分配给此单元格数组(为了清晰起见,我省略了其他结构字段):
如果num\u p
的值为1(即,单元格数组不是数组),则一切正常。但是,如果num\u p
的值大于1,我会得到以下错误:
Scalar structure required for this assignment.
Error in:
space_averaged_data.Ps{p} = mean( Ps{p}, 2 );
此作业中的非标量结构是什么?我不知道错误指的是什么。您正在创建一个
1x5
struct
数组。引述:
如果value
是单元格数组,则s
是与value
具有相同维度的结构数组。s
的每个元素都包含value
的对应元素
由于表达式struct('Ps',cell(1,length(Ps))
中的第二个参数是1x5
cell
,因此输出struct
将是1x5
struct数组,并且for
循环中的正确赋值将是
space_averaged_data(p).Ps = mean( Ps{p}, 2 );
要获得所需的行为,请将第二个参数包装在{}
中,使其成为1x1
单元格
数组:
space_averaged_data = struct( 'Ps', {cell( 1, length(Ps) )} );
而-for的
循环应该按预期工作。您正在创建一个1x5
结构
数组。引述:
如果value
是单元格数组,则s
是与value
具有相同维度的结构数组。s
的每个元素都包含value
的对应元素
由于表达式struct('Ps',cell(1,length(Ps))
中的第二个参数是1x5
cell
,因此输出struct
将是1x5
struct
数组,并且for
循环中的正确赋值将是
space_averaged_data(p).Ps = mean( Ps{p}, 2 );
要获得所需的行为,请将第二个参数包装在{}
中,使其成为1x1
单元格
数组:
space_averaged_data = struct( 'Ps', {cell( 1, length(Ps) )} );
而-循环的应该按预期工作