在 Matlab 中将数组值分配给对象数组

Dil*_*ian 1 arrays matlab object assign

我有以下问题:

[obj(:).Radius] = arrayOfRadius;
Run Code Online (Sandbox Code Playgroud)

我有每个对象的半径数组。尽管对象与右手边的arrayOfRadius 具有相同的大小,但上面的代码不起作用。

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

for i = 1:length(obj)
   obj(i).Radius = arrayOfRadius(i);
end
Run Code Online (Sandbox Code Playgroud)

这不是我想解决的方法。我已经找到了“交易”功能。但是 deal 函数会在每个对象中复制整个 arrayOfRadius()。

有人可以帮我吗?

非常感谢。

exc*_*aza 5

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

存在一种解决方法deal,尽管它需要中间使用num2cell

% Initialize a structure
obj(6).radius = 6;

radii = [1 2 3 4 5 6];
C = num2cell(radii);
[obj(:).radius] = deal(C{:});
Run Code Online (Sandbox Code Playgroud)

返回:

>> [obj.radius]

ans =

     1     2     3     4     5     6
Run Code Online (Sandbox Code Playgroud)

如预期的。