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/11/07 19:34:17
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维矩阵,不知道你要做的是矩阵*矩阵,还是矩阵元素*矩阵元素,这个地方是用*号还是用(.*)号.因为这个*两边维数对不上,我认为你应该在*号前加个点.