任何人都可以告诉我如何将这个循环数组值pp1与pp的单个值进行比较。如果pp的值出现在pp1中那么它必须显示1或必须显示0.我只得到1 pp1的值。代码是:
[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 :(得分: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
如果值不是标量,那么这种方法有点困难 - 你仍然可以使用矩阵来收集相等大小的向量,或者使用单元格数来收集任何东西 - 但在这种情况下,坚持使用第一种方法可能更容易。