返回信息流function y = overlap_add(x,h,N)
Lx = length(x);
M = length(h);
if N<M
N = M+1;
end
L = M + N -1;
T = ceil(Lx/N);
t = zeros(1,M-1);
x = [x,zeros(1,(T+1)*N - Lx)];
y = zeros(1,(T+1)*N);
for i = 0:1:T
x = i*N+1;
x_tmp = x(x,x+N-1);
y_tmp = circonv_f(x_tmp,h,L);
y_tmp(1:M-1) = y_tmp(1:M-1)+t(1:M-1);
t(1:M-1) = y_tmp(N+1,L);
y(x,x+N-1) = y_tmp(1:N);
end
y = y(1:Lx+M-1);
end
照着流程图编了个重叠相加法的线性卷积快速算法,不过运行的时候报“Not enough input arguments
”,不知道怎么错了。谢谢!!!!
这是一条镜像帖。来源:北邮人论坛 / matlab / #9996同步于 2013/5/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖
[问题]matlab新手求大神指导DSP实验代码错误
detectivetyc
2013/5/22镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
这是函数 不能直接运行 要给输入参数调用
【 在 detectivetyc 的大作中提到: 】
: function y = overlap_add(x,h,N)
: Lx = length(x);
: M = length(h);
: ...................
【 在 z2642x 的大作中提到: 】
: 这是函数 不能直接运行 要给输入参数调用
谢谢,这个后来我也发现了。但是在调用的时候还有错误,在将输出序列的后M-1个元素赋予缓存序列t的前M-1个元素时显示越界。。。不知道什么叫越界了?
长度一样的话检查一下是否下标有0或负数
【 在 detectivetyc 的大作中提到: 】
: 谢谢,这个后来我也发现了。但是在调用的时候还有错误,在将输出序列的后M-1个元素赋予缓存序列t的前M-1个元素时显示越界。。。不知道什么叫越界了?