一、連續時間信號的表示:
1、向量表示法:
在MATLAB中,是用連續信號在等時間間隔點的樣值來近似表示連續信號,當取樣時間間隔足夠小時,這些離散的樣值就能較好地近似出連續信號。
對於連續時間信號f(t),一般是用兩個行向量f和t來表示。t=t1:p:t2 ,t1 表示的是信號的起始時間,t2為終止時間,p為時間的間隔。而f為連續時間f(t)在向量t所定義的時間范圍內對應的樣值。
2、符號運算表示法:
使用sym定義變量,然后進行表示。
Eg:分別采用上述兩種方法畫出抽樣信號:
clear all; t=-10:1.5:10;%取點數比較少,圖形會比較失真 f=sin(t)./t; subplot(2,2,1),plot(t,f) t=-10:0.1:10;%取點數比較多,圖形會比較接近 f=sin(t)./t; subplot(2,2,2),plot(t,f) f=sym('sin(t)/t');%采用符號方法 subplot(2,2,3),ezplot(f,[-10 10]) t=-3*pi:pi/100:3*pi; ft=sinc(t/pi);%直接用malab中的函數 subplot(2,2,4),plot(t,ft)
二、一些常用信號的表示:
1、單位階躍信號:
(1)利用符號函數maple中的內核函數Heaviside
(2)利用自編函數Heaviside(t)
function f=Heaviside(t) f=(t>0);
(3)利用符號函數來生成單位階躍函數
t=-10:0.1:10; f=sign(t)/2+0.5; plot(t,f); axis([-5,5,-1.2,1.2]);

clear all %利用maple中的heaviside函數來實現u(t+3)-2u(t) subplot(2,2,1); syms t f=heaviside(t+3)-2*heaviside(t); ezplot(f,[-3*pi,3*pi]) axis([-5,5,-1.2,1.2]); title('u(t+3)-2u(t)'); %利用自己編寫的heaviside函數來實現u(t+3)-2u(t) subplot(2,2,2); t=-5:0.01:5; f=Heaviside(t+3)-2*Heaviside(t); plot(t,f); axis([-5,5,-1.2,1.2]); title('u(t+3)-2u(t)') %利用符號函數來實現單位階躍信號 subplot(2,2,3); t=-5:0.05:5; f=sign(t); ff=1/2+1/2*f; plot(t,ff); axis([-5 5 -0.1 1.1]); title('u(t)') %利用符號函數來實現u(t+3)-2u(t) subplot(2,2,4); t=-5:0.01:5; f=(1/2+1/2*sign(t+3))-2*(1/2+1/2*sign(t)); plot(t,f),axis([-5,5,-1.2,1.2]),title('u(t+3)-2u(t)')
2、MATLAB信號處理工具箱提供的連續信號:
(1)使用MATLAB自帶函數生成:
%指數信號的表示y=A*exp(a*t) subplot(2,4,1); A=1; a=-0.4; t=0:0.01:10; ft=A*exp(a*t); plot(t,ft); title('指數信號') %要放在plot后面 grid on %正弦信號y=A*sin(w0*t+phi) subplot(2,4,2); A=1; w0=2*pi; phi=pi/6; t=0:0.001:8; ft=A*sin(w0*t+phi); plot(t,ft); title('正弦信號'); grid on; %抽樣函數sinc(t)=sin(pi*t)/pi*t subplot(2,4,3); t=-3*pi:pi/100:3*pi; ft=sinc(t/pi); plot(t,ft); title('抽樣函數信號'); grid on; %矩形脈沖信號y=rectpuls(t,width)產生一個幅值為1,寬度為width,相對於t=0點左右對稱的矩形波信號 subplot(2,4,4); t=0:0.001:4; T=1; ft=rectpuls(t-2*T,2*T); plot(t,ft); axis([-1 5 -0.5 1.5]); %要放在plot后面 title('矩形脈沖信號'); grid on; %周期性矩形信號即方波信號y=square(t,DUTY)產生一個周期為2*pi,幅值為1(-1)的周期性方波信號,duty表示占空比 subplot(2,3,4); t=-0.0625:0.001:0.0625; ft=square(2*pi*30*t,75); plot(t,ft); axis([-0.0625 0.0625 -1.5 1.5]); title('頻率為30赫茲的周期性方波信號'); grid on; %三角波脈沖信號y=tripuls(t,width,skew)用以產生一個最大幅度為1,寬度為width,斜度為skew的三角波信號。 %該函數的橫坐標范圍由向量t決定,是以t=0為中心向左右各展開width/2的范圍。 %斜度skew是介於-1和1之間的值,它表示最大幅度1出現所對應的橫坐標位置。 %一般地,最大幅度1出現在t=(width/2)×skew的橫坐標位置 subplot(2,3,5); t=-3:0.001:3; ft=tripuls(t,4,0.5); plot(t,ft); axis([-3 3 -0.5 1.5]); title('三角波脈沖信號'); grid on; %周期性三角波信號y=sawtooth(t,width)用以產生一個周期為2*pi,最大幅度為1,最小幅度為-1的周期性三角波信號(又稱鋸齒波信號)。 %width表示最大幅度出現的位置 subplot(2,3,6); t=-5*pi:pi/10:5*pi; ft=sawtooth(t,0.5); plot(t,ft); axis([-16 16 -1.5 1.5]); title('周期性三角波信號'); grid on;
(2)信號工具函數
%一般周期性脈沖信號y=pulstran(t,d,'func',p1,p2,...)
%t制定pulstran的橫坐標范圍,向量d用於指定周期性的偏移量(即各個周期的中心點)
%整個pulstran函數的返回值實際上就相當於y=func(t-d(1))+func(t-d(2))+......
%p1,p2...是需要傳送給func函數的額外輸入參數值(除去時間變量t外),例如rectpuls需要width這個額外參數等
%一般周期性脈沖信號y=pulstran(t,d,'func',p1,p2,...) %t制定pulstran的橫坐標范圍,向量d用於指定周期性的偏移量(即各個周期的中心點) %整個pulstran函數的返回值實際上就相當於y=func(t-d(1))+func(t-d(2))+...... %p1,p2...是需要傳送給func函數的額外輸入參數值(除去時間變量t外),例如rectpuls需要width這個額外參數等 clear all; subplot(1,2,1); t=-0.5:0.001:1.5; d=0:0.5:1; y=pulstran(t,d,'rectpuls',0.1);%周期性矩形信號 plot(t,y); axis([-0.1 1.1 -0.1 1.1]); title('周期性矩形信號') grid on %周期三角波信號 subplot(1,2,2); t=-0.2:0.001:1.2; d=0:1/2:1; y=pulstran(t,d,'tripuls',0.1,-1); plot(t,y); axis([-0.1 1.1 -0.1 1.1]); title('周期性三角波信號'); grid on;
3、復指數信號
%實現方法一: %fuction fexp(d,w,t1,t2,a) %繪制復指數信號時域波形程序 %d:復指數信號復頻率實部 %w:復指數信號復頻率虛部 %t1:繪制波形的起始時間 %t2:繪制波形的終止時間 %a:復指數信號的幅度 clear all figure(1); fexp(0,pi/4,0,15,2); %實現方法二: t=0:0.01:15; a=0;b=pi/4; z=2*exp((a+i*b)*t); figure(2) subplot(2,2,1),plot(t,real(z)),title('實部') subplot(2,2,3),plot(t,imag(z)),title('虛部') subplot(2,2,2),plot(t,abs(z)),title('模') subplot(2,2,4),plot(t,angle(z)),title('相角')

三、連續信號的時域運算、時域變換
1、利用符號運算實現連續信號的時域變換
(1)相加:
s=symadd(f1,f2)%s=f1+f2
ezplot(s)
(2)相乘:
s=symmul(f1,f2)%s=f1*f2
ezplot(s)
(3)移位:
y=subs(f,t,t-t0)%f(t-t0) y=subs(f,t,t+t0)%f(t+t0) ezplot(y)
(4)反折:
y=subs(f,t,-t)
ezplot(y)
(5)尺度變換:
y=subs(f,t,a*t)
ezplot(y)
(6)倒相
y=-f
ezplot(y)
clear all syms t %f=sym('(t/2+1)*(heaviside(t+2)-heaviside(t-2))') f=(t/2+1)*(heaviside(t+2)-heaviside(t-2)); subplot(2,3,1),ezplot(f,[-3,3]),title('f(t)') y1=subs(f,t,t+2) subplot(2,3,2),ezplot(y1,[-5,1]),title('f(t+2)') y2=subs(f,t,t-2) subplot(2,3,3),ezplot(y2,[-1,5]),title('f(t-2)') y3=subs(f,t,-t) subplot(2,3,4),ezplot(y3,[-3,3]),title('f(-t)') y4=subs(f,t,2*t) subplot(2,3,5),ezplot(y4,[-2,2]),title('f(2*t)') y5=-f subplot(2,3,6),ezplot(y5,[-3,3]),title('-f(t)')

四、連續系統的沖激響應、階躍響應
1、沖激響應:
limpulse(b,a)
impulse(b,a,t)
impulse(b,a,t1:p:t2)
y=impulse(b,a,t1:p:t2)
2、階躍響應
step(b,a)
step(b,a,t)
step(b,a,t1:p:t2)
y=step(b,a,t1:p:t2)
其中:
clear all; a=[1 5 6]; b=[3 0 2]; %沖擊響應 figure(1) subplot(2,2,1),impulse(b,a) subplot(2,2,2),impulse(b,a,5) %繪制0~5范圍內沖激響應的時域波形 subplot(2,2,3),impulse(b,a,1:0.1:2) %繪制1~2范圍內,步長為0.1的沖激響應的時域波形 y1=impulse(b,a,1:0.1:3);%給出數值解 subplot(2,2,4),plot(1:0.1:3,y1) %階躍響應 figure(2) subplot(2,2,1),step(b,a) subplot(2,2,2),step(b,a,5) subplot(2,2,3),step(b,a,1:0.1:2) y2=step(b,a,1:0.1:3); subplot(2,2,4),plot(1:0.1:3,y2)


五、求LTI連續系統的響應
1、零輸入響應:
nitial(A,B,C,D,y(0-),t)
2、零狀態響應:
Lsim(sys,X,t)
Lsim(b,a,X,t)
Lsim(A,B,C,D,X,t)
3、全響應:
lsim(A,B,C,D,X,t,y(0-))
其中:
微分方程系統函數對象的生成函數:sys=tf(b,a)
微分方程的狀態方程系數生成函數: [A,B,C,D]=tf2ss(b,a)
4、例子:
clear all; a=[1 3 2]; b=[1 3]; t=0:0.01:10; x=exp(-3*t); rc=[2,1]; sys=tf(b,a) [A,B,C,D]=tf2ss(b,a) figure(1) subplot(3,1,1),initial(A,B,C,D,rc,t) %零輸入響應 subplot(3,1,2),lsim(b,a,x,t) %零狀態響應 subplot(3,1,3),lsim(A,B,C,D,x,t,rc) %全響應,只能用狀態系數來表示系統
結果:
sys = s + 3 ------------- s^2 + 3 s + 2 Continuous-time transfer function. A = -3 -2 1 0 B = 1 0 C = 1 3 D = 0

六、兩個信號的卷積:
1、自編卷積函數:
function [f,t]=gggfconv(f1,f2,t1,t2) d=input(‘請輸入采樣時間間隔: '); f=conv(f1,f2); %計算序列f1和f2的卷積和 f=f*d; ts=t1(1)+t2(1) %計算序列f非零值的起始位置 l=length(t1)+length(t2)-2; %計算序列f非零值的寬帶 t=ts:d:(ts+l*d) %計算序列f非零值的時間向量 subplot(2,2,1);plot(t1,f1) subplot(2,2,2);plot(t2,f2) subplot(2,2,3);plot(t,f);
2、例子:
clear all; %計算連續時間信號卷積積分並繪波形 t1=-1:0.01:3; f1=Heaviside(t1)-Heaviside(t1-2); %定義信號 t2=t1; f2=0.5*t2.*(Heaviside(t2)-Heaviside(t2-2)); %定義信號 [t,f]=gggfconv(f1,f2,t1,t2); %計算卷積積分並繪出時域波形