matlab算信号卷积(不用conv)

来源:百度知道 编辑:UC知道 时间:2024/05/17 04:17:45
速度回答拿分
方便的话 请留Q

function c = conv_new(a, b)

na = length(a);
nb = length(b);

if na ~= numel(a) || nb ~= numel(b)
error('MATLAB:conv:AorBNotVector', 'A and B must be vectors.');
end

if na > nb
if nb > 1
a(na+nb-1) = 0;
end
c = filter(b, 1, a);
else
if na > 1
b(na+nb-1) = 0;
end
c = filter(a, 1, b);
end

% 对向量a,b卷积,竖乘法
La = length(a);
Lb = length(b);%向量长度
c = zeros(Lb,La);
for i = 1:Lb
c(i,:) = a*b(Lb+1-i);
end
d = [zeros(Lb,Lb-1) c];
for i = 2:Lb
d(i,:) = [d(i,i:end) zeros(1,i-1)];
end
d = sum(d)