补2019/11/2
(1)编写函数如x=siAdd(x1,n1,x2,n2),实现两个序列x1和x2的相加,其中x1的下标为n1=n1s:nlf,x2的下标为n2=n2s:n2f。绘制出该函数的图形。设x1(n)=n,0≦n1≦9,x2(n)=n,4≦n2≦15。
(2)编写函数如stepshift(n0,n1,n2)实现u(n)的移位序列u(n-n0),n1≦n≦n2,绘出该函数图形。设n1=0,n2=9,n0=2。
(3)x(n)=[1 ,-1 ,3,5],起点n=0,生成以下序列:y(n)=2x(n+2)-x(n-1)-2x(n) 。
function [y,n]=sigAdd(d1,n1,d2,n2) %定义sigAdd函数
m=[min(n1),min(n2)]; %m 保存n1,n2序列下标的最小值p=[max(n1),max(n2)]; %p 保存n1,n2序列下标的最大值n=min(m):1:max§; %n 计算序列相加后的长度(0-15)y1=zeros(1,length(n)); %y1 取序列相加后16个输入点y2=y1; %y2 取序列相加后16个输入y1(find((n)>=min(n1))&(n<=max(n1))==1)=d1; %find(x)返回x矢量的所有非零引索号y2(find((n)>=min(n2))&(n<=max(n2))==1)=d2; %find(x)返回x矢量的所有非零引索号y=y1+y2; %求和endn1=[0:9]; %初始化n1值n2=[0:15]; %初始化n2值x1=n1; x2=n2;x=sigAdd(x1,n1,x2,n2) %计算序列相加figure(1); %图1stem(x); %绘制序列相加 grid on; %添加网格
function [y,n]=Stepshift(m0,m1,m2) %定义Stepshift函数
n=m1:m2; %初始化n值
y=[(n-m0)>=0]; %返回阶跃点的值
end
n1=input(‘起点:’); %n1 输入序列起点
n2=input(‘终点:’); %n2 输入序列终点
n0=input(‘阶跃:’); %n0 输入序列阶跃点 [x,n]=Stepshift(n0,n1,n2); %进行序列移位计算
figure(2); %图2
stem(n,x);xlabel(‘n’);ylabel(‘x’);grid on; %绘制x图像
(3)
function [y,n]=Sigadd3(h1,n1,h2,n2,h3,n3) %定义Sigadd3函数
m=[min(n1),min(n2),min(n3)]; %m 保存n1,n2,n3序列下标的最小值
p=[max(n1),max(n2),max(n3)]; %p 保存n1,n2,n3序列下标的最大值
n=min(m):1:max§; %n 计算序列相加后的长度
y1=zeros(1,length(n)); %y1 取相加后序列长度个输入点
y2=y1; %y2 取相加后序列长度个输入点
y3=y1; %y3 取相加后序列长度个输入点
y1(find((n>=min(n1))&(n<=max(n1))==1))=h1; %find(x)返回x矢量的所有非零引索号
y2(find((n>=min(n2))&(n<=max(n2))==1))=h2; %find(x)返回x矢量的所有非零引索号
y3(find((n>=min(n3))&(n<=max(n3))==1))=h3; %find(x)返回x矢量的所有非零引索号
y=y1+y2+y3;
end
function [y,n]=Stepshift3(t1,t2,t3) %定义Stepshift3函数
n=t2+t3; %初始化n值
y=t1; %y 返回阶跃点的值
end
clear; %清除内存中的变量
close all; %关闭所有图形窗口
n=0:3; %初始化n值
x=[1 -1 3 5]; %输入序列x
[x11,n11]=Stepshift3(x,n,-2); %对x11序列进行右2位移位
[x12,n12]=Stepshift3(x,n,1); %对x12序列进行左1位移位
[x13,n13]=Stepshift3(x,n,0); %对x13没有进行移位操作
[x1,n]=Sigadd3(2*x11,n11,(-1)*x12,n12,(-2)*x13,n13); %序列移位后相加计算
figure(3); %图3
stem(n,x1);xlabel(‘n’);ylabel(‘x1’);grid on; %绘制x1序列图像