Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.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
MATLAB错误是什么;此赋值所需的标量结构“;在这份声明中提到了什么?_Matlab_Data Structures_Cell Array - Fatal编程技术网

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) )} );
而-循环的
应该按预期工作