matlab 重叠相加法做线性卷积l=10;%M=N/9;w=[1,2,3,4,5,4,3,2,1];h=[1,2,3,4,5];N=9;M=5for i=1:lx((i-1)*N+1:i*N)=w;endhk=fft(h,N+M-1);y=zeros(1,M+N*l-1);y(1:N+M-1)=ifft(fft(w(1:N),N+M-1)*hk);for i=2:l;yk=ifft(fft(w((i-1))*N+1:i*N),(N+M-1)*hk);y(
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/06 12:52:09
![matlab 重叠相加法做线性卷积l=10;%M=N/9;w=[1,2,3,4,5,4,3,2,1];h=[1,2,3,4,5];N=9;M=5for i=1:lx((i-1)*N+1:i*N)=w;endhk=fft(h,N+M-1);y=zeros(1,M+N*l-1);y(1:N+M-1)=ifft(fft(w(1:N),N+M-1)*hk);for i=2:l;yk=ifft(fft(w((i-1))*N+1:i*N),(N+M-1)*hk);y(](/uploads/image/z/8292201-33-1.jpg?t=matlab+%E9%87%8D%E5%8F%A0%E7%9B%B8%E5%8A%A0%E6%B3%95%E5%81%9A%E7%BA%BF%E6%80%A7%E5%8D%B7%E7%A7%AFl%3D10%3B%25M%3DN%2F9%3Bw%3D%5B1%2C2%2C3%2C4%2C5%2C4%2C3%2C2%2C1%5D%3Bh%3D%5B1%2C2%2C3%2C4%2C5%5D%3BN%3D9%3BM%3D5for+i%3D1%3Alx%28%28i-1%29%2AN%2B1%3Ai%2AN%29%3Dw%3Bendhk%3Dfft%28h%2CN%2BM-1%29%3By%3Dzeros%281%2CM%2BN%2Al-1%29%3By%281%3AN%2BM-1%29%3Difft%28fft%28w%281%3AN%29%2CN%2BM-1%29%2Ahk%29%3Bfor+i%3D2%3Al%3Byk%3Difft%28fft%28w%28%28i-1%29%29%2AN%2B1%3Ai%2AN%29%2C%28N%2BM-1%29%2Ahk%29%3By%28)
matlab 重叠相加法做线性卷积l=10;%M=N/9;w=[1,2,3,4,5,4,3,2,1];h=[1,2,3,4,5];N=9;M=5for i=1:lx((i-1)*N+1:i*N)=w;endhk=fft(h,N+M-1);y=zeros(1,M+N*l-1);y(1:N+M-1)=ifft(fft(w(1:N),N+M-1)*hk);for i=2:l;yk=ifft(fft(w((i-1))*N+1:i*N),(N+M-1)*hk);y(
matlab 重叠相加法做线性卷积
l=10;
%M=N/9;
w=[1,2,3,4,5,4,3,2,1];
h=[1,2,3,4,5];
N=9;
M=5
for i=1:l
x((i-1)*N+1:i*N)=w;
end
hk=fft(h,N+M-1);
y=zeros(1,M+N*l-1);
y(1:N+M-1)=ifft(fft(w(1:N),N+M-1)*hk);
for i=2:l;
yk=ifft(fft(w((i-1))*N+1:i*N),(N+M-1)*hk);
y((i-1)*N+1:(i-1)*N+M-1)=yk(1:M-1)+y((i-1)*N+1:(i-1)*N+M-1);
y((i-1)*N+M:i*N+N-1)=yk(M:N+M-1);
end
plot(y);
拿错了?
matlab 重叠相加法做线性卷积l=10;%M=N/9;w=[1,2,3,4,5,4,3,2,1];h=[1,2,3,4,5];N=9;M=5for i=1:lx((i-1)*N+1:i*N)=w;endhk=fft(h,N+M-1);y=zeros(1,M+N*l-1);y(1:N+M-1)=ifft(fft(w(1:N),N+M-1)*hk);for i=2:l;yk=ifft(fft(w((i-1))*N+1:i*N),(N+M-1)*hk);y(
我看出两个问题,不知道是不是.
y(1:N+M-1)=ifft(fft(w(1:N),N+M-1)*hk);
1、w(1:N)是什么函数?是写错了,还是你自己在前面计算过了,如果有的话,x函数又是怎么加回事,后面跟本没有用到.
2、fft(w(1:N),N+M-1)*hk,里面这个*号两边都是1维矩阵,不知道你要做的是矩阵*矩阵,还是矩阵元素*矩阵元素,这个地方是用*号还是用(.*)号.因为这个*两边维数对不上,我认为你应该在*号前加个点.