Matlab簡(jiǎn)明上手指南
眾所周知,《信號(hào)與系統(tǒng)》和《數(shù)字信號(hào)處理》課程(以及其他很多課程)的學(xué)習(xí)要用到matlab,它可以直觀地給出圖形結(jié)果,幫助我們理解理論知識(shí)。matlab的功能很強(qiáng)大,相關(guān)的書籍也大都是厚厚的一本,初學(xué)者感到無(wú)從下手。實(shí)際上,與c等高級(jí)語(yǔ)言相比,matlab是很容易上手的一門語(yǔ)言。本文就簡(jiǎn)單介紹一下學(xué)習(xí)這兩門課程要用到的一些函數(shù)。特別說(shuō)明的是,本文只適合對(duì)matlab一竅不通的菜鳥看,高手和大神可略過(guò)哦。
一、簡(jiǎn)介
Matlab(MATrix LABoratory)是美國(guó)MathWorks公司開發(fā)的科學(xué)計(jì)算軟件,是為科學(xué)計(jì)算而設(shè)計(jì)的可視化計(jì)算器。利用簡(jiǎn)單命令,可以完成其他高級(jí)語(yǔ)言只能通過(guò)復(fù)雜編程才能實(shí)現(xiàn)的數(shù)值計(jì)算和圖形顯示。
Matlab已發(fā)展稱為適合多學(xué)科、多種工作平臺(tái)的功能強(qiáng)大的大型軟件。成為線性代數(shù)、自動(dòng)控制、數(shù)理統(tǒng)計(jì)、信號(hào)處理等課程的基本教學(xué)工具,為理工科大學(xué)生、碩士、博士必須掌握的基本技能。在科研單位和工業(yè)部門,Matlab被廣泛應(yīng)用于科學(xué)研究。
二、簡(jiǎn)單使用指南
1. 程序運(yùn)行方式
Matlab語(yǔ)言由一些簡(jiǎn)單的命令組成,執(zhí)行方式有兩種,一種是直接在命令窗口下執(zhí)行,第二種是把程序以文本格式存放在.m文件中,執(zhí)行文件時(shí),只需在命令窗口下輸入文件名(去掉.m后綴)即可。第二種方式是更常用、也更為方便的一種方式。
2. 變量
變量不需要定義,可以直接使用。變量均代表一個(gè)矩陣(行向量可以看做是1×N矩陣,列向量可以看做是N×1的矩陣,一個(gè)數(shù)可以看做是1×1的矩陣)。
變量的定義有三種形式:
(1)直接定義,如:
a=1;
b=[1 2 3
4 5 6];
c=10:0.1:11;
上述語(yǔ)句,生成a為一個(gè)數(shù),數(shù)值為1;b為一個(gè)2×3的矩陣,c為一個(gè)行向量,第一個(gè)和最后一個(gè)數(shù)值為10和11,每相鄰兩個(gè)數(shù)之間的差為0.1。
(2)從外部的數(shù)據(jù)文件輸入,如:
s=load('D:\MyDocuments\Data2.txt');
文件Data.txt的內(nèi)容如下,則執(zhí)行上述語(yǔ)句后變量s為4×2的矩陣。
(3)從鍵盤輸入,如:
d=input('輸入你的年齡:');
運(yùn)行以上語(yǔ)句,按屏幕提示,輸入“30”,則變量d=30。
3. 基本操作符
一般的加(+)、減(-),乘(*)、除(/)、冪(^)等操作符均是針對(duì)矩陣的運(yùn)算。
兩個(gè)矩陣對(duì)應(yīng)元素相乘、除用“.*”和“./”。
矩陣中對(duì)應(yīng)元素的冪用“.^”。
矩陣轉(zhuǎn)置用“’”。
4.庫(kù)函數(shù)
Matlab提供了很多數(shù)學(xué)函數(shù),如sin(正弦)、cos(余弦)、sqrt(開方)、bassel(貝塞爾函數(shù))等等。另外,各類工具箱提供了適合于各種專門用途的庫(kù)函數(shù)。用戶也可以編寫自己的函數(shù)添加到庫(kù)函數(shù)中。下面,簡(jiǎn)單介紹一下信號(hào)處理工具箱——SINGSAL,以及自己編寫函數(shù)的方法。
(1)信號(hào)處理工具箱——SINGSAL
信號(hào)處理工具箱覆蓋了經(jīng)典信號(hào)處理的大多數(shù)內(nèi)容,是一個(gè)非常優(yōu)秀的算法研究、輔助設(shè)計(jì)工具,提供了大量的工具函數(shù)、濾波器分析和設(shè)計(jì)工具,常用的函數(shù)有:
l 傅里葉變換的相關(guān)函數(shù):
fft(一維快速傅里葉變換)、ifft(一維快速傅里葉反變換)、fft2(二維快速傅里葉變換)、ifft2(二維快速傅里葉反變換)、abs(求模)、angel(求相角)等。
l IIR濾波器設(shè)計(jì)的相關(guān)函數(shù):
buttord、butter、cheb1ord、cheb2ord、ellipord、cheby1、cheby2、ellip等。
l FIR濾波器設(shè)計(jì)的相關(guān)函數(shù):
fir1、fir2、firls、remezord、remez等。
l 窗函數(shù):
boxcar、rectwin、bartlett、triang、hanning、hamming、blackman、kaiser、gausswin、chebwin、tukeywin等。
l 頻率響應(yīng)的相關(guān)函數(shù):
freqz、freqs等。
(2)用戶自定義函數(shù)
按如下方式,很容易建立用戶自定義函數(shù)myFun,輸入?yún)?shù)為x1和x2,輸出參數(shù)為y1和y2。
新建.m文件,保存的文件名為myFun.m,文件的第一行為:
function [y1,y2]= myFun (x1,x2)
后面為實(shí)現(xiàn)該函數(shù)功能的語(yǔ)句。
這樣,在用戶編寫的其他程序中,就可以直接象使用庫(kù)函數(shù)一樣使用該函數(shù)。
5. 繪圖操作
Matlab的作圖功能非常強(qiáng),除了可以在屏幕上顯示圖形外,還可以對(duì)屏幕上已有的圖形進(jìn)行修改,如加注釋、題頭,修改坐標(biāo)等。
常用的繪圖命令及功能如下表所示。
表 Matlab的常用繪圖命令及功能
繪圖命令 | 功能 | 繪圖命令 | 功能 |
plot | 線性X-Y坐標(biāo)圖 | title | 加題頭 |
stem | 離散序列圖 | xlabel | X軸標(biāo)注 |
subplot | 分割窗口 | ylabel | Y軸標(biāo)注 |
loglog | 雙對(duì)數(shù)坐標(biāo)圖 | text | 任意位置的標(biāo)注 |
semilogx | X軸對(duì)數(shù)半對(duì)數(shù)坐標(biāo)圖 | grid on/off | 顯示/隱藏坐標(biāo)網(wǎng)格 |
semilogy | Y軸對(duì)數(shù)半對(duì)數(shù)坐標(biāo)圖 | axis | 設(shè)置坐標(biāo)軸范圍 |
Matlab的圖形顯示形式非常靈活,下面對(duì)幾種常用的顯示設(shè)置加以說(shuō)明:
(1)需要用多個(gè)圖形窗顯示多個(gè)圖形時(shí),應(yīng)在圖形顯示語(yǔ)句前加上圖形窗指令figure;
(2)需要在一個(gè)圖形窗顯示多個(gè)圖形時(shí),應(yīng)在圖形顯示語(yǔ)句前加上圖形窗分塊函數(shù)subplot,如subplot(3,2,3);plot(x,y);則將圖形窗分為3行2列共6塊區(qū)域,當(dāng)前顯示的x、y數(shù)據(jù)曲線在第3塊(從左上角開始,即第2行第1列);
(3)在一個(gè)圖形中顯示多條曲線時(shí),應(yīng)在前一個(gè)圖形顯示語(yǔ)句后加上hold on,用以保持當(dāng)前曲線,然后在后一個(gè)圖形顯示語(yǔ)句后加上hold off。
(4)執(zhí)行plot或stem顯示波形圖時(shí),默認(rèn)的是用藍(lán)色細(xì)實(shí)線,可以在語(yǔ)句中改變線型、顏色、粗細(xì)等。例如:
plot(x,y,’r’);%紅色細(xì)實(shí)線
plot(x,y,'r--');%紅色虛線
plot(x,y,'g','LineWidth',2);%綠色粗實(shí)線
默認(rèn)的坐標(biāo)軸為自動(dòng)設(shè)置,如果需要選擇坐標(biāo)軸范圍,在圖形顯示語(yǔ)句后調(diào)用axis,如:
axis([-1 10 020]);%x軸范圍為-1~10,y軸范圍為0~20
6. 查看幫助
Matlab的幫助功能非常強(qiáng)大,有幾種方式查看幫助:
(1)在命令窗口中鍵入 help ***,***為需要查看的命令或函數(shù),如:
help freqz,則會(huì)顯示處freqz函數(shù)的功能、調(diào)用方式、輸入/輸出參數(shù)的含義等。
(2)使用菜單help
(3)demo
可以在命令窗口鍵入demo或者使用菜單:help/demos
下面附上幾個(gè)簡(jiǎn)單的示例程序。你只需要點(diǎn)擊菜單“File→New→Script”(如下圖左圖),或者更簡(jiǎn)單地選擇快捷菜單(如下圖右圖),然后將相應(yīng)的代碼copy到出現(xiàn)的編輯窗口中,取一個(gè)你喜歡的名字保存(但是注意不能以數(shù)字開頭,不能包含短橫線-等特殊符號(hào)和漢字),再點(diǎn)擊快捷菜單運(yùn)行程序就ok啦。
(1)示例程序1:
%程序功能:實(shí)現(xiàn)繪制連續(xù)時(shí)間正弦和離散時(shí)間正弦函數(shù)
%編寫者:丹梅
%時(shí)間:2012-10-10
clc;clear;close all;
f=10;%頻率,單位:Hz
t=0:0.001:1;%時(shí)間
x=cos(2*pi*f*t);%連續(xù)時(shí)間正弦函數(shù)
fs=100;%采樣頻率
n=0:1:30;
xn=cos(2*pi*f*n/fs);
plot(t,x);%畫出連續(xù)時(shí)間正弦函數(shù)的波形圖
figure;
stem(n,xn);%畫出離散時(shí)間正弦序列的圖形
運(yùn)行結(jié)果應(yīng)該是這樣的:
(2)示例程序2:
%程序功能:計(jì)算L點(diǎn)長(zhǎng)的矩形窗的N點(diǎn)DFT,并畫出幅度譜
%編寫者:丹梅
%時(shí)間:2012-10-10
clc;clear;closeall;
L=5;%序列長(zhǎng)度
N=50;%DFT點(diǎn)數(shù)
xn=ones(1,L);%L點(diǎn)的矩形窗
Xk=fft(xn,N);%做N點(diǎn)DFT
stem((0:length(Xk)-1),abs(Xk),'LineWidth',2);xlabel('k');ylabel('|Xk|');title('DFT');
運(yùn)行結(jié)果應(yīng)該是這樣的:
(3)示例程序3:
%程序功能:計(jì)算序列xn的DFT,并畫出幅度譜和相位譜
%編寫者:丹梅
%時(shí)間:2012-10-10
clc;clear;close all;
xn=[1,1,3,2];
Xk=fft(xn)
subplot(211);stem((0:length(Xk)-1),abs(Xk),'LineWidth',2);xlabel('k');ylabel('|X(k)|');title('幅度譜');
subplot(212);stem((0:length(Xk)-1),angle(Xk),'LineWidth',2);xlabel('k');ylabel('arg[X(k)]');title('相位譜');
聯(lián)系客服