1.请实现常用的典型序列。(包括但不限于单位脉冲序列,单位阶跃序列,矩形序列,指数序列,正弦序列等。)
指数序列:
t=0:10;
xn=exp(-2*t);
stem(t,xn,"filled")
grid on
单位脉冲序列:
n = [-3:3]; %生成位置向量
x = [(n-1) == 0]; %生成单个脉冲序列
stem(n,x);
axis([-3,3,0,1.5]); %标示坐标
单位阶跃序列:
n = [-3:3]; %生成位置向量
x = [(n+1) >= 0]; %生成阶跃序列
stem(n,x);axis([-3,3,0,1.5]);
正弦序列 :
n = [0:1:20]; % 生成位置向量
x = 3*sin(0.1*pi*n+pi/3); % 生成正弦序列
stem(n,x);
axis([0,20,-4,4]);
复指数序列:
n = [-2:10];
x = exp((0.2-0.5j)*n); %复指数序列
subplot(1,2,1), stem(n,real(x)); %用空心圆画点
line([-5,10], [0,0]); %画横坐标
subplot(1,2,2), stem(n,imag(x),'filled');
%用实心圆画点
% line([-5,10], [0,0])
2.基本序列的运算
①差分运算
序列1 matlab:
t=0:10;
xn=t;
stem(t,xn,'filled')
title('y=t')
grid on
序列2 matlab:
t=0:10;
xn=2*t+1;
stem(t,xn,'filled')
title('y=2t+1')
grid on
差分运算matlab:
t=0:10;
x=0:10;
xn1=x;
xn2=2*x+1;
stem(t,xn1-xn2,'filled')
grid on
②尺度变换
原序列matlab :y=x+1
t=0:10;
x=0:10;
xn1=x+1;
stem(2*t,xn1,'filled')
grid on
原序列尺度变换(内插)的matlab:
t=0:10;
x=0:10;
xn1=x+1;
stem(2*t,xn1,'filled')
grid on
③翻转
n = [-3:3]; %生成一个序列
x = [0,0,1,0.5,0.25,0.125,0];stem(n,x);
x = fliplr(x); %x排列次序左右翻转
n = -fliplr(n); %向量n对n= 0翻转
stem(n,x);
3.已知序列x = [3,-3,7,0,-1,5,2];非零区间为-4≤n≤2;h = [2,3,0,-5,2,1];非零区间为-1≤n≤4,请分别计算无位置信息和有位置信息的卷积和。
卷积和函数:convextd.m
function [y,ny] = convextd(x,nx,h,nh)
% 序列y为序列x和序列h的卷积
% ny,nx,nh 分别为序列y,x和h的位置向量
% 调用方式 [y,ny] = convextd(x,nx,h,nh)
ny1 = nx(1)+nh(1); % 计算卷积后的起点位置
ny_end = nx(end) + nh(end);
% 计算卷积后的终点位置
y = conv(x,h); % 计算卷积和序列的数值
ny = [ny1:ny_end]; % 计算卷积和序列的位置向量
无位置信息:
x = [3,-3,7,0,-1,5,2];
% 序列x的非零区间-4≤n≤2
h = [2,3,0,-5,2,1];
% 序列x的非零区间-1≤n≤4
% 调用conv计算卷积和
y = conv(x,h)
有位置信息:
x = [3,-3,7,0,-1,5,2]; nx = [-4:2];
% 给定输入序列
h = [2,3,0,-5,2,1]; nh = [-1:4];
% 给定脉冲响应序列
[y,ny] = convextd(x,nx,h,nh)
% 带位置序列的卷积结果
4.请用工具箱函数计算法求卷积。
卷积和函数:convextd.m
function [y,ny] = convextd(x,nx,h,nh)
% 序列y为序列x和序列h的卷积
% ny,nx,nh 分别为序列y,x和h的位置向量
% 调用方式 [y,ny] = convextd(x,nx,h,nh)
ny1 = nx(1)+nh(1); % 计算卷积后的起点位置
ny_end = nx(end) + nh(end);
% 计算卷积后的终点位置
y = conv(x,h); % 计算卷积和序列的数值
ny = [ny1:ny_end]; % 计算卷积和序列的位置向量
x=[0,1,2,3];
h=[0,1,2,3];
y=conv(x,h)
5.请用计算机递推法求解差分方程。
a=0.8; ys=1;
%设差分方程系数a=0.8,初始状态:y(-1)=1
xn=[1,zeros(1, 30)];
%x(n)=单位脉冲序列,长度 N=31
B=1;A=[1,-a];
%差分方程系数
xi=filtic(B,A,ys);
%由初始条件计算等效初始条件的输人序列 xi
yn=filter(B,A,xn,xi);
%调用 filter 解差分方程,求系统输出信号 y(n)
n=0:length(yn)-1;
subplot(1, 1, 1); stem(n, yn,'.')
title('(a)'); xlabel('n'); ylabel('y(n)')
ys=1时:
ys=0时: