matlab struct修改数组元素

时间:2015-12-11 14:17:13

标签: matlab struct

我有一个struct array字段seg.startscan。 我想删除它的一些元素。

例如,与存储的索引相对应的元素包含在数组INDS中。

以下是ny尝试和相对错误:

1)

  
    

seg.startscan(INDS)= [];

  

???此任务所需的标量结构。

2)

  
    

seg(INDS).startscan = [];

  

???右侧输出不足以满足逗号 分离 列表在左侧扩展。缺少[]是最有可能的 原因。

3)

  
    

startscans = seg.startscan;         startcans(INDS)= [];         fldnm ='startscan';         seg。(fldnm)= startscans;

  

???右侧输出不足以满足逗号 分离 列表在左侧扩展。缺少[]是最有可能的 原因。

4)

  
    

startscans = seg.startscan;         startcans(INDS)= [];         fldnm ='startscan';         [seg。(fldnm)] = startscans;

  

???输出参数太多。

5) 正如这里建议的那样:1

>>startscans = seg.startscan;
startscans(INDS) = [ ];
fldnm = 'startscan';
[seg.(fldnm)] = startscans;

???输出参数太多。

你有什么想法吗? 可能我没有掌握结构数组背后的想法..

我们的输入是:

>>seg.startscan
ans=
1
ans=
2
ans=
3
ans=
4
>>INDS = [1 3];

然后我的预期输出是:

>>seg.startscan 

ans=
2
ans=
4

这给出了一个非常相似的解决方案,但它没有矢量化而且不完全正确

 >>for i = 1:numel(INDS)
    seg(IND(i)).startscan=[];
 end
 >>seg.startscan 

ans=
[]
ans=
2
ans=
[]
ans=
4

请帮忙!

谢谢!

1 个答案:

答案 0 :(得分:2)

转换

  

seg.startscan = [1 2 3 4 5];   INDS = [1 3];

  

seg.startscan = [2 4 5];

你只需使用

seg.startscan(INDS) = [];