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()。
有人可以帮我吗?
非常感谢。
这是 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)
如预期的。