Как я могу исправить эту ошибку: «plot: Неверный размер для входных аргументов # 2 и # 3: Несовместимые измерения.»? - PullRequest
1 голос
/ 17 июня 2019

Я пытаюсь построить изображение режекторного фильтра, частотный отклик сигнала до фильтрации и после режекторной фильтрации.Однако я не могу отобразить два последних графика, только первый (Notch).Потому что ошибка: 'plot: Неверный размер для входных аргументов # 2 и # 3: Несовместимые размеры.'

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

wavread("C:\Users\kaline\Desktop\Disciplinas\2019.1\PDS\2° etapa\Trabalho final\sirene.wav","size")
[y,Fs,bits]=wavread("C:\Users\kaline\Desktop\Disciplinas\2019.1\PDS\2° etapa\Trabalho final\sirene.wav");Fs,bits


y=loadwave("C:\Users\kaline\Desktop\Disciplinas\2019.1\PDS\2° etapa\Trabalho final\sirene.wav");
//playsnd(y)

fs=12000;
n=[0:5999];
a=[0.940809 -1.105987 0.940809];
b=[1 -1.105987 0.881618];
[xm,fr]=frmag(a,b,512);
subplot(3,1,1)
plot(fr,abs(xm))
Y=fft(y);
f=n*fs/6000;
subplot(3,1,2)
plot(f,abs(Y)),
z=filter(a,b,y);
z=filter(a,b,z);
z=filter(a,b,z);
w=fft(z);
subplot(3,1,3)
plot(f,abs(w),'r')

playsnd(w);

Я ожидаю, что дерево будет отображаться в том же окне, и воспроизведу аудио отфильтрованного звука с помощью playnsd (w), но на самом деле у меня есть: только один график (график Нотча)

1 Ответ

0 голосов
/ 17 июня 2019

Я думаю, вам нужно только изменить размер n, чтобы он соответствовал размеру Y.

Добавьте следующие строки кода после Y=fft(y); вместо f=n*fs/6000;:

n_samp = size(Y,2);
n = [0:n_samp-1]
f=n*fs/n_samp;

Ошибка исчезла, но я не уверен в правильности кода (и могуничем не помогу) ...


Я использовал стерео сэмпл, поэтому мне пришлось добавить еще одно небольшое изменение.
Вот мой тестовый пример кода:

//wavread("C:\Users\kaline\Desktop\Disciplinas\2019.1\PDS\2° etapa\Trabalho final\sirene.wav","size")
wavread("c:\Program Files\MATLAB\R2016a\toolbox\audio\samples\Turbine-16-44p1-mono-22secs.wav","size")
//[y,Fs,bits]=wavread("C:\Users\kaline\Desktop\Disciplinas\2019.1\PDS\2° etapa\Trabalho final\sirene.wav");Fs,bits
[y,Fs,bits]=wavread("c:\Program Files\MATLAB\R2016a\toolbox\audio\samples\WashingMachine-16-44p1-stereo-10secs.wav");Fs,bits

//y=loadwave("C:\Users\kaline\Desktop\Disciplinas\2019.1\PDS\2° etapa\Trabalho final\sirene.wav");
y=loadwave("c:\Program Files\MATLAB\R2016a\toolbox\audio\samples\Engine-16-44p1-stereo-20sec.wav");
//playsnd(y)

fs=12000;
n=[0:5999];
a=[0.940809 -1.105987 0.940809];
b=[1 -1.105987 0.881618];
[xm,fr]=frmag(a,b,512);
subplot(3,1,1)
plot(fr,abs(xm))
Y=fft(y);
n_samp = size(Y,2);
n = [0:n_samp-1]
f=n*fs/n_samp;
subplot(3,1,2)
plot(f,abs(Y)),
z=filter(a,b,y(1,:));
z=filter(a,b,z(1,:));
z=filter(a,b,z(1,:));
w=fft(z);
subplot(3,1,3)
plot(f,abs(w),'r')

playsnd(w);
...