2014-03-29 3 views
0

Может ли кто-нибудь сказать мне, как сравнить это значение массива loop pp1 с единственным значением pp. Если значение pp присутствует в pp1, тогда оно должно показать 1 или должен показать 0. Я получаю 1 только последнее значение pp1. Код:Как сравнить значения массива с одним значением в matlab

[pp,pf1]=pitchauto(x,fs); 

for ix=1:2 
    V='.wav'; 
    ie=num2str(ix); 
    Stc=strcat(ie,V); 
    [x1,fs1]=wavread(Stc); 
    figure,plot(x1); 
    title('Test Audio'); 
    [pp1,pf1]=pitchauto(x1,fs1); 
end 

if (pp==pp1) 
    msgbox('Matching'); 
else 
    msgbox('Not Matching'); 
end 

Просьба ответить с правильными ответами.

+0

Тест проходит после цикла, поэтому, конечно, вы получаете только последний элемент. Если вы хотите протестировать каждый элемент по очереди, поставьте тест внутри цикла. – Notlikethat

+0

Должен ли я поставить это значение pp внутри цикла. –

+0

использовать 'ismember'. –

ответ

0

Вы вычисляете значение для pp1 каждый раз, ничего не делайте с ним, затем пусть следующая итерация цикла перезапишет его. Для того, чтобы использовать его, либо поместить тест внутри цикла:

for ix=1:2 
    V='.wav'; 
    ie=num2str(ix); 
    Stc=strcat(ie,V); 
    [x1,fs1]=wavread(Stc); 
    figure,plot(x1); 
    title('Test Audio'); 
    [pp1,pf1]=pitchauto(x1,fs1); 

    if (pp==pp1) 
     msgbox('Matching', num2str(ix)); % show the index number as msgbox title 
    else 
     msgbox('Not Matching', num2str(ix)); 
    end 
end 

или собирать значения pp1 в массиве, чтобы проверить потом:

for ix=1:2 
    V='.wav'; 
    ie=num2str(ix); 
    Stc=strcat(ie,V); 
    [x1,fs1]=wavread(Stc); 
    figure,plot(x1); 
    title('Test Audio'); 
    [pp1(ix),pf1]=pitchauto(x1,fs1); % assuming pitchauto returns a scalar 
end 

matchidx = (pp == pp1); 
if any(matchidx) 
    msgbox(strcat('Matching indices: ', num2str(find(matchidx)))); 
else 
    msgbox('Not Matching'); 
end 

Если значения не скаляр , то этот подход немного сложнее - вы все равно можете использовать матрицу для сбора векторов одинакового размера или массива ячеек для сбора чего-либо, но в этом случае, вероятно, проще придерживаться первого подхода.

+0

спасибо, чувак. –

+0

1-й код, который вы дали классификацию при каждом запуске цикла. Второй код работает отлично. Еще раз спасибо –

Смежные вопросы