clc;%清屏幕
clear all;%清除工作区间内所有变量
x = [1 2 3 4 5 ];
h = [2 1 1 1 ];
[m1,n1] = size(x);%获取x[n]的行数和列数
[m2,n2] = size(h);%获取h[n]的行数和列数
n3 = n1+n2-1;%输出序列的长度,即x[n]序列长度和h[n]序列长度之和,再减1
xsub = 0:n1-1;%序列x[n]的下标
hsub = 0:n2-1;%序列h[n]的下标
ysub = 0:n3-1;%输出序列y[n]的下标
figure(1)
subplot(2,1,1);%选择2X1区域中的1号区
stem(xsub,x);
title('x[n]');
subplot(2,1,2);%选择2X1区域中的2号区
stem(hsub,h,'r');
title('h[n]');
%打印原始数据
A = zeros(n3,n3);B = zeros(n3,1);C = zeros(1,n3+n3);D=zeros(1,n3);
%先生成一个0矩阵和0向量A,x和h中维度高的作为0向量中的一部分元素;
%维度小的去填充矩阵
p=fliplr(h)
%翻转序列h并赋值给p
B(n2:n3) = x'
%转置序列x并赋值给B的第1列从n2到n3行
C(1,1:n2) = p
%把p赋值给c的1行从1列到n2列
for i=1:n3
A(i,1:n3)=C(1,1:n3)
C=circshift(C,1)
end
%把C序列循环移位并赋值给A
Y=A*B;%数组相乘得出卷积结果
figure(2)
subplot(1,1,1);%选择1X1区域中的3号区
stem(ysub,Y,'g');
title('y[n]');
%打印结果
结果
本人菜逼;别骂。