如何检查结构域中数字的存在?

时间:2012-03-17 19:45:43

标签: matlab

这是我的代码,其中形成了一个结构:

while (count < 98)
    % certain codes here, then

    s(count).frame = count;        
    s(count).freq = frequency;
    s(count).str = strength;

    binnum = find(newdata2);
    s(count).bin = binnum;

    count = count + 1;
end

数组binnum的内容和长度是不确定的,因为它在循环中形成并在每次迭代中更改其值。我知道'binnum'只能保存1到1024之间的值。

现在我需要垂直检查此字段s.bin,即每次从s(1).bins(97).bin检查是否存在从1到1024的数字。即存在所有{{ {1}}我需要存储在另一个结构中的相应帧值。如果例如binnum1中存在s(1).bin,那么我必须存储值1&amp; 70在另一个结构中。

同样的事情要看2然后3然后4等等,直到1024,即每次我必须通过s(70).bins(1).bin检查1单独然后单独2然后仅3人等等。

我尝试过这样的事情

s(97).bin

但是这不起作用,因为在xx = 1; for bins = 1:1024 for frame = 1:97 if (s(frame).bin == bins) r(bins).start(xx) = frame; xx = xx + 1; end end end 条件下我无法索引if,因为我不知道它的长度。

我现在该怎么办?

1 个答案:

答案 0 :(得分:0)

我不确定我理解你的问题,并怀疑有一种更容易的方法来攻击它。那就是说,这就是你所追求的吗?

r = [];
for bins = 1:1024
    r(bins).start = [];
    for frame = 1:97
        if any(s(frame).bin == bins)  
            r(bins).start(end+1,1) = frame;
        end  
    end
end