-1

我已经像这样初始化了一个结构数组:

[v(1:5).s] = deal( false(1, 3) );

现在,我只想修改其中的某些元素。我可以使用 for 循环来做到这一点,如下所示:

idv = [2 4 5];                 % v indexes
ids = [1 1 3];                 % corresponding s indexes where to write
for i=1:length(idv)
   v( idv(i) ).s( ids(i) ) = true;
end

有没有办法向量化这个操作?

如果我需要更新现有结构中的向量怎么办?

假设我有:

for i = 1:NoP
    vm(i).s = false(size(vm(i).v));
end

我怎样才能矢量化这个?我会节省时间吗?

非常感谢!

4

1 回答 1

1

简单
首先我们构造一个具有适当逻辑值的元胞数组

>> l = false(5,3);
>> l( sub2ind([5 3],idv,ids) ) = true;
>> l = mat2cell( l, ones(5,1), 3 );

使用这个单元,我们可以构造结构

>> v = struct('s', l)
于 2013-09-11T21:16:45.883 回答