как проверить наличие номера в поле структуры? - PullRequest
0 голосов
/ 17 марта 2012

Это мой код, где формируется структура:

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).bin до s(97).bin каждый раз на наличие чисел от 1 до 1024. т.е. присутствует первая 1, в которой все binnum s соответствуют кадру значения мне нужно хранить в другой структуре. Если, например, 1 присутствует в s(1).bin и в s(70).bin, то я должен сохранить значения 1 и 70 в другой структуре.

Снова то же самое, чтобы увидеть 2, затем 3, 4 и т. Д. До 1024, то есть каждый раз, когда мне нужно пройти от s(1).bin до s(97).bin, чтобы проверить только 1, затем только 2, затем только 3 и скоро.

Я пробовал что-то вроде этого

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 я не могу индексировать s.bin, так как не знаю его длины.

Что мне теперь делать?

1 Ответ

0 голосов
/ 18 марта 2012

Я не уверен, что понимаю вашу проблему и подозреваю, что есть более простой способ это решить. Тем не менее, это то, что вы ищете?

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...