gpt4 book ai didi

matlab - 如何解决此错误: “plot: Wrong size for input arguments #2 and #3: Incompatible dimensions.”?

转载 作者:行者123 更新时间:2023-12-02 23:29:24 25 4
gpt4 key购买 nike

我正在尝试绘制陷波滤波器的图像,陷波滤波之前和之后的信号频率响应。但是,我无法显示两个倒数图,只能显示第一个(凹口)。因为该错误:'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)播放经过过滤的音频;但是实际上我只有:一个图(陷波图)

最佳答案

我认为您只需要更改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);

关于matlab - 如何解决此错误: “plot: Wrong size for input arguments #2 and #3: Incompatible dimensions.”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56622789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com