本系列教程來源于出版設(shè)計《基于MATLAB編程基礎(chǔ)與典型應(yīng)用書籍》闲昭,如涉及版權(quán)問題罐寨,請聯(lián)系:156204968@qq.com。 出版社:人民郵電出版社序矩, 頁數(shù):525鸯绿。
本系列教程目前基于MATLABR2006a,可能對于更高級版本的功能和函數(shù)有差異簸淀,教程中如有問題瓶蝴,請聯(lián)系:156204968@qq.com
2.2 數(shù)組及矩陣的創(chuàng)建和操作
本節(jié)將介紹數(shù)組及矩陣的創(chuàng)建和操作,包括數(shù)組的輸入以及數(shù)組元素的操作租幕。由于數(shù)組和矩陣在創(chuàng)建和尋訪的處理方式類似舷手,因此將兩者綜合一起說明。
2.2.1 數(shù)據(jù)及矩陣的輸入
輸入的方法有多種劲绪,常用的主要有直接輸入法男窟、語句生成法以及特殊矩陣函數(shù)生成法。另外還有MAT數(shù)據(jù)文件加載生成法及M文件輸入法贾富。
(1)直接輸入法
最簡單歉眷、最常用的構(gòu)造方法,一般用于數(shù)組及矩陣維數(shù)比較少的情況颤枪。
【例2.1】數(shù)組直接輸入法
>> x=[3.5 pi/2 sqrt(3) 3+5i] %采用空格生成1×4的數(shù)組
上述語句得到數(shù)組x:
x=3.5000 1.5708 1.7321 3.0000+5.0000i
【例2.2】矩陣直接輸入法
>> a=[1 2 3;4 5 6;7 8 9] %生成3×3的數(shù)組矩陣
上述語句得到矩陣a:
a = 1 2 3 4 5 6 7 8 9
命令中的“;”表示矩陣的一行結(jié)束汗捡,使用換行同樣可以得到上面的矩陣a,代碼如下所示畏纲。
>> a=[1 2 3 4 5 6 7 8 9]
注意:(1) 數(shù)組創(chuàng)建使用操作符方括號([])
(2) 每行內(nèi)的元素間用逗號或空格隔開扇住;
(3) 行與行之間用分號或回車鍵隔開;
(4) 元素可以是數(shù)值或表達式霍骄。
(2)語句生成法
使用語句生成法可以生成固定步長的數(shù)組或矩陣台囱。常用的格式:
x=from:step:to
其中from、step和to
分別表示開始值读整、步長和結(jié)束值簿训,中間用冒號分隔。當step
省略時則默認為step=1
。以步長step
為采樣間隔生成x强品,x中第一個元素為from
膘侮,如果(to-from)
為step
的整數(shù)倍則最后一個元素為to,否則小于to的榛。下面結(jié)合示例具體介紹該方式的使用琼了。
【例2.3】使用
“from:step:to”
方式生成以下數(shù)組
①生成開始值為1,結(jié)束值為5夫晌,間隔為0.5的數(shù)組雕薪。在命令窗口輸入:
>> a1=1:0.5:5 %開始值為1,結(jié)束值為5晓淀,間隔為0.5的數(shù)組
此時所袁,生成的數(shù)組a1如下所示。
a1 = 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000 5.0000
②如果只設(shè)置開始值和結(jié)束值凶掰,間隔值step不設(shè)置燥爷,生成數(shù)組時step默認為1。例如在命令窗口輸入以下內(nèi)容:
>> a2=1:10 %開始值為1懦窘,結(jié)束值為10前翎,默認間隔為1的數(shù)組
結(jié)果如下:
a2 = 1 2 3 4 5 6 7 8 9 10
③如果開始值>結(jié)束值,并且步長step>0畅涂,則生成數(shù)組失敗港华,數(shù)組為空。例如在命令窗口輸入以下內(nèi)容:
>> a3=5:0.5:1 %開始值為5毅戈,結(jié)束值為1苹丸,間隔為-0.5的數(shù)組
此時,得到如下所示的結(jié)果苇经。
a3 = Empty matrix: 1-by-0
④如果開始值>結(jié)束值赘理,步長step<0,可以成功生成數(shù)組扇单。例如在命令窗口輸入:
>> a4=5:-0.5:1
結(jié)果如下:
a4 = 5.0000 4.5000 4.0000 3.5000 3.0000 2.5000 2.0000 1.5000 1.0000
注意:(1)step默認值為1商模;
(2)當step>0而from>to時為空矩陣或當step<0而from<to時也為空矩陣;
(3)冒號必須是英文狀態(tài)下輸入的冒號蜘澜,否則會產(chǎn)生計算錯誤施流。
除了使用“from:step:to”格式生成固定步長的數(shù)組,還可以使用linspace
和logspace
函數(shù)生成數(shù)組鄙信。linspace
函數(shù)的語法格式如下:
linspace(a,b,n)
其中瞪醋,a、b装诡、n三個參數(shù)分別表示開始值银受、結(jié)束值和元素個數(shù)践盼。該函數(shù)生成從a到b之間線性分布的n個元素的行向量,n如果省略則默認值為100宾巍。
logspace
函數(shù)的語法格式如下:
logspace (a,b,n)
該函數(shù)與linspace類似咕幻,給出開始值、結(jié)束值和元素個數(shù)顶霞,不過logspace用來生成對數(shù)等分向量肄程。它生成從10a到10b之間按對數(shù)等分的n個元素的行向量。n如果省略則默認值為50选浑。
【例2.4】用linspace和logspace函數(shù)生成行向量
①生成從0到2*pi的線形采樣的(1×10)向量蓝厌,在命令窗口輸入:
>> A=linspace(0,2*pi,10) %生成從0到2*pi的線形采樣的,元素個數(shù)為10
用linspace函數(shù)生成的矩陣A:
A = 0 0.6981 1.3963 2.0944 2.7925 3.4907 4.1888 4.8869 5.5851 6.2832
②生成從0到2的對數(shù)采樣的(1×9)向量古徒,在命令窗口輸入:
>> B=logspace(0,2,9) %生成從0到2的對數(shù)采樣褂始,元素個數(shù)為9
用logspace函數(shù)生成的矩陣B:
B = 1.0000 1.7783 3.1623 5.6234 10.0000 17.7828 31.6228 56.2341 100.0000
(3)特殊矩陣生成函數(shù)法
前面介紹的兩種方法一般應(yīng)用在生成比較簡單的數(shù)組或向量,但是在實際應(yīng)用過程中經(jīng)常會使用一些比較特殊的有分布規(guī)律的矩陣描函,MATLAB提供了很多能夠產(chǎn)生特殊矩陣的函數(shù),各函數(shù)的指令與功能如表2.2所示狐粱。
函數(shù)名 | 功能 |
---|---|
zeros(m,n) |
產(chǎn)生m×n的全0矩陣 |
ones(m,n) |
產(chǎn)生m×n的全1矩陣 |
rand(m,n) |
產(chǎn)生m×n均勻分布的隨機矩陣舀寓,元素取值范圍0.0~1.0。 |
randn(m,n) |
產(chǎn)生m×n正態(tài)分布的隨機矩陣 |
magic(N) |
產(chǎn)生N階魔方矩陣(矩陣的行肌蜻、列和對角線上元素的和相等) |
eye(m,n) |
產(chǎn)生m×n的單位矩陣 |
注意:(1)zeros互墓、ones、rand蒋搜、randn和eye函數(shù)當只有一個參數(shù)n時篡撵,則為n×n的方陣;
(2)當eye(m,n)函數(shù)的m和n參數(shù)不相等時則單位矩陣會出現(xiàn)全0行或列豆挽。
【例2.5】特殊矩陣生成函數(shù)
①若要生成一個(2×3)全零矩陣,可以在命令窗口輸入:
>> zeros(2,3) %生成一個(2×3)全零矩陣
此時,生成的矩陣為:
ans = 0 0 0 0 0 0
②若要生成一個(2×3)全1矩陣霸褒,可以在命令窗口輸入:
>> ones(2,3) %生成一個(2×3)全1矩陣
結(jié)果如下:
ans = 1 1 1 1 1
③若要生成一個(3×3)均勻分布的隨機矩陣馅扣,可以在命令窗口輸入:
>> rand(3,3) %該矩陣元素的取值為0.0~1.0,均勻分布的隨機矩陣
由上述語句生成的隨機矩陣如下所示(計算結(jié)果隨機)娘侍。
ans = 0.9501 0.4565 0.9218 0.2311 0.0185 0.7382 0.6068 0.8214 0.1763
④若要生成一個(3×3)正態(tài)分布的隨機矩陣咖刃,可以在命令窗口輸入:
>> randn(3,3) %正態(tài)分布的隨機矩陣
結(jié)果如下:
ans = -0.4326 1.1892 -0.5883 -1.6656 -0.0376 2.1832 0.1253 0.3273 -0.1364
⑤若要生成一個(4×4)的魔方矩陣,可以在命令窗口輸入:
>> magic(4) %生成一個4×4的魔方矩陣
由magic函數(shù)產(chǎn)生的魔方矩陣如下所示憾筏。
ans = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1
⑥若要生成一個(3×3)的單位矩陣嚎杨,可以在命令窗口輸入:
>> eye(3) %生成一個3×3的單位矩陣
由eye函數(shù)產(chǎn)生的單位矩陣如下所示。
ans = 1 0 0 0 1 0 0 0 1
(4)MAT數(shù)據(jù)文件加載生成法
MATLAB啟動后氧腰,系統(tǒng)會自動建立一個工作空間枫浙,在用戶進行操作前刨肃,該工作空間中只包含系統(tǒng)提供的一些特殊變量,如pi自脯、eps等之景。用戶使用過程中會增加一些自己定義的變量,如果用戶不使用clear指令來清除膏潮,這些自定義的變量會一直被保存在該工作空間锻狗,直到關(guān)閉系統(tǒng)。如果希望該工作空間中的變量可以保存以便下次使用焕参,可以使用save指令保存為MAT數(shù)據(jù)文件轻纪,使用load指令或選擇菜單【File】
下的【Import Data】
命令加載MAT數(shù)據(jù)文件來創(chuàng)建變量,
【例2.6】使用指令方式保存和加載MAT數(shù)據(jù)文件
>> clear all %清除工作空間中所有的變量
>> x=[1:4]; y=linspace(1,10,10); %生成變量x和y
>> who %查看內(nèi)存中的變量叠纷,結(jié)果顯示有兩個變量x和y
使用who命令可以查看內(nèi)存中的變量刻帚,在本例中查出內(nèi)存中已經(jīng)生成了兩個變量x和y,結(jié)果如下所示涩嚣。
Your variables are: x y
為了方便以后使用這兩個變量崇众,接下來在命令窗口輸入:
>> save myxy %使用save指令將內(nèi)存變量保存入myxy.mat數(shù)據(jù)文件中
通過save命令可以將指令保存到MAT文件中,myxy就是保存的數(shù)據(jù)文件名航厚。使用clear all命令清除工作空間中的所有變量顷歌。
>> clear all %清除工作空間中所有的變量
此時在命令窗口輸入:
>> y %輸入變量y查看該變量的值,結(jié)果顯示該變量沒有被定義
得到如下的提示結(jié)果幔睬。
??? Undefined function or variable 'y'.
為了能夠使用已經(jīng)保存的變量眯漩,可以通過load指令獲取。在命令窗口中接著輸入:
>> load myxy %使用load指令將myxy.mat數(shù)據(jù)文件中保存的變量加載入當前工作空間
>> y %輸入變量y查看該變量的值
此時麻顶,得到y(tǒng)變量的結(jié)果如下所示赦抖。
y = 1 2 3 4 5 6 7 8 9 10
(5)M文件創(chuàng)建矩陣
對于今后經(jīng)常要調(diào)用的數(shù)組,尤其是比較大的復雜數(shù)組辅肾,可以為其專門建立一個M文件队萤。具體方法是打開文件編輯器,寫入這個矩陣內(nèi)容并為其命名矫钓,保存這個M文件浮禾,以后凡是要用到這個矩陣,只要運行這個M文件份汗,這個矩陣就會自動生成并保存于MATLAB的內(nèi)存中盈电。
【例2.7】用M文件創(chuàng)建大矩陣,文件名為example.m
打開文件編輯調(diào)試器杯活,輸入以下內(nèi)容匆帚,并保存此文件為example.m。
%example.m 創(chuàng)建矩陣exam
exm=[ 456 468 873 2 579 55 21 687 54 488 8 13 65 4567 88 98 21 5 456 68 4589 654 5 987 5488 10 9 6 33 77];
在文件編輯調(diào)試器中運行或在MATLAB窗口輸入example就可以生成矩陣exam旁钧。
>> example;
>> size(exm) %顯示exm的大小吸重,exm有5行6列
上述語句得到exm矩陣的大小互拾,結(jié)果如下所示。
ans= 5 6
作者:德特數(shù)據(jù)
聯(lián)系方式:156204968@qq.com