2015-12-11 76 views
0

我有一个结构数组字段seg.startscan。 我想删除它的一些元素。matlab结构修改数组元素

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

以下是NY尝试和相对误差:

1)

seg.startscan(INDS)= [];

???这个任务需要标量结构。

2)

SEG(INDS).startscan = [];

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

3)

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

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

4)

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

???输出参数太多。 1

5) 作为这里提出

>>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 

请帮忙!

谢谢!

+0

您无法擦除某些索引的字段。您可以删除由“INDS”指示的所有记录及其所有字段。 struct数组除了'startscan'还有更多的字段吗? –

+0

是的。它也有一个seg.stopscan – shamalaia

+1

你不能有'seg(1)'只有字段'startscan' _and_'seg(1)'带有'startscan'和'stopscan'字段。您需要删除'seg(1)'的所有字段。或填写空格:或者'seg(1).startscan = [];'或'[seg(IND).startscan] = deal([]) –

回答

1

要变换

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

seg.startscan = [2 4 5];

您只需使用

seg.startscan(INDS) = []; 
+0

这实际上是我第一次尝试。我更新了这个问题。错误是?这个任务需要标量结构。 – shamalaia

+0

对不起,我不知道你想要什么。你的问题很不清楚。你是否按原样粘贴了我的代码? –

+0

是的,它的工作原理。但是当我运行该程序时它不起作用。我真的不明白为什么.. – shamalaia