Arrays 在Matlab中将数组值指定给对象数组

Arrays 在Matlab中将数组值指定给对象数组,arrays,matlab,object,assign,Arrays,Matlab,Object,Assign,我有以下问题: [obj(:).Radius] = arrayOfRadius; 我有一个数组,每个对象都有半径。虽然对象的大小与右侧的arrayOfRadius相同,但上面的代码不起作用 我可以用for循环解决这个问题,当然: for i = 1:length(obj) obj(i).Radius = arrayOfRadius(i); end 这不是我想解决问题的方法。我已经找到了deal函数。但deal函数在每个对象中复制整个arrayOfRadius 有人能帮我吗 非常感谢。这

我有以下问题:

[obj(:).Radius] = arrayOfRadius;
我有一个数组,每个对象都有半径。虽然对象的大小与右侧的arrayOfRadius相同,但上面的代码不起作用

我可以用for循环解决这个问题,当然:

for i = 1:length(obj)
   obj(i).Radius = arrayOfRadius(i);
end
这不是我想解决问题的方法。我已经找到了deal函数。但deal函数在每个对象中复制整个arrayOfRadius

有人能帮我吗


非常感谢。

这是MATLAB索引中一个更令人讨厌的领域,我真的希望他们能解决,尤其是图形句柄从双倍移动到对象,使得如何同时设置多个对象的属性变得不直观

虽然需要中间使用以下工具,但存在一种解决方法:

返回:

>> [obj.radius]

ans =

     1     2     3     4     5     6

根据需要。

这是MATLAB索引中一个更令人讨厌的领域,我真的希望他们能解决,尤其是图形句柄从双倍移动到对象,使得如何同时设置多个对象的属性变得不直观

虽然需要中间使用以下工具,但存在一种解决方法:

返回:

>> [obj.radius]

ans =

     1     2     3     4     5     6

根据需要。

一个非常棘手的解决方案是将数组转换为单元格数组,然后使用逗号分隔的列表来完成赋值。假设已经声明了obj,请执行以下操作:

A = num2cell(arrayOfRadius);
[obj.Radius] = A{:};
将数组转换为单个元素的单元格数组,并执行{:}将单元格数组转换为逗号分隔的列表,我们将把每个元素处理到结构中其各自的插槽中。执行obj.Radius将结构中的每个Radius字段解压为逗号分隔的列表。因此,上述代码相当于执行以下操作:

[obj(1).Radius, obj(2).Radius, ..., obj(N).radius] = A(1), A(2), ..., A(N)
N是数组中元素的总数

可复制示例 我的两分钱。。。
FWIW,使用for循环方法实际上更具可读性。这样做确实会使代码变得模糊。。。尤其是当您仅将元素从数组复制到结构时。这个复制要执行多少次?如果只是一次或几次,请坚持使用for循环以提高可读性

一个非常棘手的解决方案是将数组转换为单元格数组,然后使用逗号分隔的列表来完成赋值。假设已经声明了obj,请执行以下操作:

A = num2cell(arrayOfRadius);
[obj.Radius] = A{:};
将数组转换为单个元素的单元格数组,并执行{:}将单元格数组转换为逗号分隔的列表,我们将把每个元素处理到结构中其各自的插槽中。执行obj.Radius将结构中的每个Radius字段解压为逗号分隔的列表。因此,上述代码相当于执行以下操作:

[obj(1).Radius, obj(2).Radius, ..., obj(N).radius] = A(1), A(2), ..., A(N)
N是数组中元素的总数

可复制示例 我的两分钱。。。
FWIW,使用for循环方法实际上更具可读性。这样做确实会使代码变得模糊。。。尤其是当您仅将元素从数组复制到结构时。这个复制要执行多少次?如果只是一次或几次,请坚持使用for循环以提高可读性

呵呵,相隔20秒。干得好。嘿嘿,相隔20秒。干得好。也非常感谢你!这个过程在很多元素中经常重复。在这种情况下,for循环要慢得多,所以我想用这种方法来实现快速版本。在这种情况下,使用num2cell和逗号分隔的列表。祝你好运也非常感谢你!这个过程在很多元素中经常重复。在这种情况下,for循环要慢得多,所以我想用这种方法来实现快速版本。在这种情况下,使用num2cell和逗号分隔的列表。祝你好运