我已初始化了一个结构数组:
[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
我该如何对此进行矢量化?我会节省时间吗?
非常感谢!
答案 0 :(得分:1)
简单
首先,我们构造一个具有适当逻辑值的单元数组
>> l = false(5,3);
>> l( sub2ind([5 3],idv,ids) ) = true;
>> l = mat2cell( l, ones(5,1), 3 );
使用这个单元格我们可以构造struct
>> v = struct('s', l)