實驗一、熟悉MATLAB環境和基本信號的產生與運算

一、實驗目的

1.熟悉MATLAB 的運行環境及基本操作命令;
2.掌握MATLAB中信號的表示方法;

二、實驗器材

計算機、MATLAB軟件

三、實驗原理

1、 MATLAB簡介

MATLAB語言以矩陣計算爲基礎,語法規則簡單易學,並將高性能的數值計算和可視化結合,且功能強大、豐富的函數工具箱,可擴展性強,深受工程技術人員及科技專家的歡迎,並很快成爲應用學科計算機輔助分析、設計、仿真、教學等領域不可缺少的基礎軟件。

(1)MATLAB的桌面系統

MATLAB既是一種高級計算機語言,又是一個編程環境。MATLAB的桌面系統,由桌面平臺、窗口、菜單欄和工具欄組成。啓動MATLAB後,界面如圖1.1所示。
在圖1.1中,最上面有“MATLAB”標題,標題欄的右邊從左到右依次爲窗口最小化、縮放和關閉按鈕。標題欄下是條形主菜單,主菜單下是工具欄按鈕與設置當前目錄的彈出式菜單框及其右側的查看目錄樹的按鈕(【Browse for Folder】)。在工具欄下的大窗口就是MATLAB的主窗口,在大窗口裏設置4個小窗口(默認設置):“Workspace”是工作空間瀏覽器窗口,管理工作空間中變量,在運行MATLAB程序時,程序創建的所有變量的主要信息都駐留在工作空間瀏覽器裏,爲用戶提供了非常方便的查詢服務;“Current Directory”路徑瀏覽器窗口,它顯示當前路徑下的文件;“Command History”歷史命令窗口;“Command Windows” 是用戶使用MATLAB進行工作的命令窗口,也是實現MATLAB各種功能的主窗口,MATLAB在這裏爲用戶提供了交互式的工作環境,即用戶可在這裏進行諸如數值計算、符號運算和運算結果的可視化等複雜的分析和處理。
在這裏插入圖片描述

                                            圖1.1 MATLAB桌面系統

比如,在命令窗口的工作區直接輸入如下字符:a=eye(4,4)然後按回車鍵,即可生成一個4×4的單位矩陣,其顯示結果如圖1.2所示。
在這裏插入圖片描述

                                          圖1.2   程序運行結果

(2)實驗中常用的MATLAB函數命令

在整個信號與系統實驗過程中,是要利用MATLAB語言來實現信號描述,信號的計算。所以,對MATLAB中的簡單常用的函數命令必須有一個好的瞭解。常用函數命令如下:
function:在MATLAB中不是它的自帶函數就可以完成所有功能,更多的時候是自己編寫程序來實現所需的功能,這時就要用到此命令,調用格式爲:function ***( ) 括號外面爲函數名稱,括號中爲函數中要用到的變量。
plot命令:plot命令是MATLAB中用來繪製用連續信號的波形。它的功能是將向量點用直線依次連接起來。調用格式:plot(f),其中向量f的值爲縱座標的值,相應的元素小標爲橫座標的值;plot(t,f),t和f爲同維向量,t值爲橫座標,f爲縱座標;plot(t1,f1;t2,f2),此命令可以在同一圖形下繪出兩個信號波形。
title命令:在繪圖命令中,可以用此命令來對繪製出來的波形做一些註釋。調用格式爲:title(‘ …… ’) 中間部分是對圖形任意註釋的描述。
xlabel、ylabel命令:這兩個也是來對繪製出來的波形做標註用的,可以標註出兩個座標軸的未知數的意義,增加圖形中的信息量。調用格式:xlabel(‘ …… ’),ylabel(‘ …… ’) 中間可以是對座標軸做註釋的文字或字母。
axis命令:此命令可以來定義繪製波形中座標的範圍。調用格式爲:axis([k1,k2,g1,g2]),其中k1,k2表示橫座標的範圍,g1,g2表示縱座標的範圍。
stem命令:此命令專門用來繪製離散序列的波形。調用格式爲:stem(k,f) 調用此命令可以繪製出離散序列的點狀圖。
fliplr命令:此函數用來將向量以零時刻爲基準點進行反折。調用格式爲:f=fliplr(f1) 這樣f就是向量f1反折後的函數。
min、max命令:這兩個命令可以用來比較算出一個向量中的最小值和最大值,或者比較得出兩個值中的較小值。調用格式爲:min(k),max(k),min(k1,k2),max(k1,k2)
length命令:此函數可以計算出向量的長度。調用格式爲:length(f)。
ones函數:這是MATLAB中一個常用的函數,它產生元素全部爲1的矩陣,本文中用此函數來表示離散階躍序列,或者定義連續的門信號,調用格式爲:n=0:5;ones(1,n)表示長度爲整數n的階躍序列。k=1:p:8;ones(1,length(k))表示長度爲k的門信號。
subplot命令:在MATLAB繪圖過程中,有時候爲了便於觀測圖形的變化,需要在一幅波形顯示窗口顯示多個信號的波形,這時可以調用subplot命令。調用格式爲:subplot(n1,n2,k),表明把一個圖形分成了n1









n2塊,在第k塊上繪製波形。

2.MATLAB中信號的表示-- MATLAB中一般用向量表示信號

(1)連續時間信號

連續時間信號,從嚴格意義上來講,MATLAB並不能處理連續信號,而是用連續信號在等時間間隔點的樣值近似表示,當取樣時間間隔足夠小時,離散的樣值能較好地近似出連續信號。所以,對於連續時間信號f(t),是用兩個行向量f和t來表示,其中向量定義爲:t=t1:dt:t1,t1爲信號起始時間,t2爲終止時間,爲時間間隔。向量f爲連續信號f(t)在向量所定義的時間點上的樣值。比如:連續時間信號f(t)=cos(t),可用MATLAB語言表示爲:
t=-5:0.1:5; f=cos(t);
用上述向量對連續信號表示後,可用plot命令其時域波形。命令如下:plot(t,f),則信號的波形如圖1.3所示。
在這裏插入圖片描述


                                                圖1.3 的波形

(2)離散時間信號

離散時間信號一般用f(k)表示,變量k爲整數,代表離散的採樣時間點。利用MATLAB表示離散序列f(k)時,也利用兩個向量表示,其中一個向量表示自變量k的取值範圍,另一個向量表示序列f(k)的值。
比如序列f(k)={2,2,2,-1,3,0,2;k=-2,-1,0,1,2,3,4}可用MATLAB表示爲:
k=-2:4;f=[2,1,2,-1,3,0,2]
此離散時間序列的波形可利用MATLAB函數stem(k,f)畫出,如圖1.4所示。
在這裏插入圖片描述



                                            圖1.4  f(k)的波形圖

3.信號的基本運算

信號的基本運算是指信號的時移、信號的摺疊、信號的加、信號的乘等。許多複雜信號就是通過簡單信號的基本運算得到的,其中信號的時移、反折和尺度變換在以後的實驗介紹。

(1)信號的加減

信號加就是在相同的時間點上將兩個或多個信號進行相加。對於連續時間信號,其兩個信號的相加可表示爲:
y(t)=f1(t)+f2(t)
在MATLAB中,是取連續信號的離散值來進行加的,所以與離散時間信號在MATLAB中的計算方法一樣,其MATLAB實現爲
y=f1+f2
這兩要求f1和f2的長度相同,位置對應,才能進行加法運算,若二者對應變量上的長度不等,則需要根據情況對信號左右補零再進行相加。



(2)信號的乘法

信號的乘就是在相同的時間點上將兩個或多個信號進行相乘。兩個連續時間信號相乘其數學表達式爲
y(t)=f1(t)*f2(t)
對於離散時間信號,其信號f1(k)和f2(k)相乘是指同一時刻兩信號的值對用相乘,可表示爲
y(k)=f1(k)*f2(k)
其MATLAB實現爲 y=f1.*f2
這裏也要求兩信號的長度必須相等,不等則必須對信號左右補零才能相乘。




四、示例演示

1.基本信號的波形

利用MATLAB軟件的信號處理工具箱(Signal Processing Toolbox)中的專用函數產生信號並繪出波形。

(1)正弦信號

正弦信號在MATLAB中用 sin
函數表示。

程序如下:
% Program1.1.m
t=0:0.01:3pi;
y1=sin(2
t);
y2=cos(2*t);
plot(t,y1;t,y2)
其結果如右圖所示。
在這裏插入圖片描述






(2)抽樣信號 抽樣信號Sa(t)=sin(t)/t

在MATLAB中用 sinc 函數表示。
定義爲
% Program1.2.m
t=linspace(-5,5); %t取值的範圍
f=sinc(t); %產生sinc函數
plot(t,f)
grid on
在這裏插入圖片描述






(3) 指數信號

在MATLAB中用exp
函數表示。
% Program1.3.m
t= -2:0.5:2;
y=exp(-t);
plot(t,y); %繪出連續值
hold on;
stem(t,y); %繪出離散值
在這裏插入圖片描述







(4)單位階躍信號

% Program1.4.m
t=-10:10;
x=((t-0)>=0);
stem(t,x);
hold on;
plot(t,x,’r’);
在這裏插入圖片描述





或者在matlab裏自編一個函數,以後的實驗中用的自編函數是heaviside()
function f=heaviside(t)
f=(t>0);

(5)單位衝激序列

或者單位脈衝序列的表達式:
在這裏插入圖片描述
延遲ks的單位脈衝序列表達式:在這裏插入圖片描述

% Program1.5.m
k=-10:10
x=(k0);
t=-10:0.01:10;
x1=(t

0);
stem(k,x); %單位衝激序列
hold on;
plot(t,x1,‘r’) %單位衝激函數在這裏插入圖片描述




或者在matlab裏自編一個函數,自編函數名爲jyxl()
function x=jyxl(n)
x=(n>=0)
或者
 %單位脈衝序列m文件
  clear
k0=0; kf=10; ks=3; %本例取ks=3,
k1=k0:kf;
x1=[zeros(1,ks-k0),1,zeros(1,kf-ks)]; %單位脈衝序列的產生
stem(k1,x1,’.’);title(‘單位脈衝序列’)%繪圖








(6) 三角信號

三角信號在MATLAB中用 tripuls 函數表示。
調用格式爲 ft=tripuls(t,width,skew),產生幅度爲1,寬度爲width,且以0爲中心左右各展開width/2大小,斜度爲skew的三角波。width的默認值是1,skew的取值範圍是-1~+1之間。一般最大幅度1出現在t=(width/2)*skew的橫座標位置。
% Program1.6.m
t=-3:0.01:3;
ft=tripuls(t,4,0.5);
plot(t,ft); grid on;
axis([-3,3,-0.5,1.5]);





(7)復指數信號

*調用格式是f=exp((a+j*b)t)
% Program1.7.m
t=0:0.01:3;
a=-1;b=10;
f=exp((a+j*b)*t);
subplot(2,2,1),plot(t,real(f)),title(‘實部’)
subplot(2,2,3),plot(t,imag(f)),title(‘虛部’)
subplot(2,2,2),plot(t,abs(f)),title(‘模’)
subplot(2,2,4),plot(t,angle(f)),title(‘相角’)







(8) 矩形脈衝信號

矩形脈衝信號可用rectpuls函數產生
調用格式爲y=rectpuls(t,width),幅度是1,寬度是width,以t=0爲對稱中心。
% Program1.8.m
t=-2:0.01:2;
width=1;
ft=2*rectpuls(t,width);
plot(t,ft)
grid on;






2.信號的運算

(1)繪出連續序列f(t)=exp[(-0.1+j0.5)t]的實部信號、虛部信號、振幅信號、相位信號。

% Program1.9.m
clear all
t=-5:5;
x=-0.1+0.5j;
f=exp(x
t); %給出復指數信號
real_f=real(f); %取復指數信號的實部
imag_f=imag(f); %取復指數信號的虛部
mag_f=abs(f); %取復指數信號的振幅
phase_f=angle(f); %取復指數信號的相位
subplot(2,2,1);
plot(t,real_f);
xlabel(‘t’);title(‘實部’);
subplot(2,2,2);
plot(t,imag_f);
xlabel(‘t’);title(‘虛部’);
subplot(2,2,3);
plot(t, mag_f);
xlabel(‘t’);title(‘振幅’);
subplot(2,2,4);
plot(t,phase_f);
xlabel(‘t’);title(‘相位’);
其程序運行結果如圖1.5所示。
在這裏插入圖片描述




















                                       圖1.5 信號的不同分量

(2)兩個序列的加、乘運算

% Program1.10.m
clear all
t=0:0.01:2;
f1=2.^(-3t);
f2=0.7
sin(4pit);
f3=f1+f2;
f4=f1.f2;
subplot(2,2,1);plot(t,f1);title(‘f1(t)’);grid on;
subplot(2,2,2);plot(t,f2);title(‘f2(t)’);grid on;
subplot(2,2,3);plot(t,f3);title(‘f1+f2’); grid on;
subplot(2,2,4);plot(t,f4);title('f1



f2’); grid on;
其運行結果如圖1.6所示
在這裏插入圖片描述






                                                     圖1.6  信號的運算

五、實驗內容

1.驗證實驗原理中程序

2.畫出信號波形(1) (2)

3.自選二個簡單的信號進行加減和乘法運算。

(1).用matlab實現f=f1(t)+f2(t)及 f=f1(t).f2(t)

程序如下…
clear all;
t=0:0.0001:5;
f1=(-t+4);
f2=stepfun(t,0)-stepfun(t,4);
f3=f1.*f2;
f4=f1+f2;
subplot(2,1,1),plot(t,f3),title(‘f1.f2’)
subplot(2,1,1),plot(t,f3),title(‘f1+f2’)
運行結果如下
在這裏插入圖片描述









(2).用matlab實現在這裏插入圖片描述

程序如下…
t = -10:10;
t0 = 0;
m = 2-exp(-2*t);
n = stepfun(t,t0);
y = m.*n;
stem(t,y);
hold on
plot(t,y,‘r’);
運行結果如下
在這裏插入圖片描述









(3).用matlab實現在這裏插入圖片描述

程序如下…
t = -10:10;
t0 = 0;
f1 = (1+cos(pi*t));
f2 = stepfun(t,t0)-stepfun(t,t0+2);
y = f1.*f2;
stem(t,y);
hold on
plot(t,y);
運行結果如下
在這裏插入圖片描述









六、實驗報告要求

1.簡述實驗目的及實驗原理。

2.對實驗內容編寫程序(M文件),繪出運算後信號的波形.

3.寫出實驗中的體會。

這是信號課的第一次實驗,第一次的學習都是較爲困難的,沒有MATLAB軟件,沒有實驗經驗,不懂如何進行程序設計。面對種種問題,我放平了心態,認認真真地聽老師講課,課下自己用心鑽研。學會了學習使用MATLAB產生基本信號,繪製信號波形,實現信號的基本運算,爲接下來的信號分析和系統設計奠定了基礎,收穫頗多。我相信,自己的不懈努力,定會使我的實驗動手能力和對信號的理解層次能夠更上一層樓。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章