首先,我們先來看一些特殊類型的數(shù)組。
MATLAB中的特殊陣列
MATLAB中會使用一些函數(shù)來建立一些特殊的陣列,對于所有這些函數(shù),一個參數(shù)創(chuàng)建一個正方形陣列,雙參數(shù)創(chuàng)建矩形陣列。
使用 zeros() 函數(shù)建立一個元素為零的數(shù)組:
例如:
zeros(5)
MATLAB 執(zhí)行上述語句,返回以下結(jié)果:
ans = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
使用 ones() 函數(shù)建立一個數(shù)組:
例如:
ones(4,3)
MATLAB執(zhí)行上述語句,返回以下結(jié)果:
ans = 1 1 1 1 1 1 1 1 1 1 1 1
使用 eye() 函數(shù)創(chuàng)建一個矩陣:
例如:
eye(4)
MATLAB執(zhí)行上述語句,返回以下結(jié)果:
ans = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
使用 rand() 函數(shù)建立一個數(shù)組(0,1)上均勻分布的隨機數(shù):
例如:
rand(3, 5)
MATLAB執(zhí)行上述語句,返回以下結(jié)果:
ans = 0.8147 0.9134 0.2785 0.9649 0.9572 0.9058 0.6324 0.5469 0.1576 0.4854 0.1270 0.0975 0.9575 0.9706 0.8003
MATLAB幻方
產(chǎn)生相同的總和,當它的元素加入逐行,逐列或?qū)蔷€幻方是一個正方形。
使用 magic() 函數(shù)創(chuàng)建一個幻方陣列,它需要一個單數(shù)的參數(shù),該參數(shù)必須是一個大于或等于3的標量。
例如:
magic(4)
MATLAB執(zhí)行上述語句,返回以下結(jié)果:
ans = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1
MATLAB多維數(shù)組
在MATLAB中,一個陣列如果具有兩個以上的維度則被稱為多維數(shù)組。
在MATLAB中的多維數(shù)組是正常的兩維矩陣的延伸。
MATLAB中需要先創(chuàng)建一個二維數(shù)組然后對該二維數(shù)組進行擴展,這樣才能生成一個多維數(shù)組。
例如,我們先建立一個二維數(shù)組a。
a = [7 9 5; 6 1 9; 4 3 2]
MATLAB執(zhí)行上述語句,返回以下結(jié)果:
a = 7 9 5 6 1 9 4 3 2
數(shù)組 a 是一個 3x3 陣列,通過提供的值,我們可以添加一個第三維,例如:
a(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]
MATLAB執(zhí)行上述語句,返回以下結(jié)果:
a(:,:,1) = 7 9 5 6 1 9 4 3 2 a(:,:,2) = 1 2 3 4 5 6 7 8 9
同樣,我們也可以使用 ones(), zeros() 或 rand() 函數(shù)建立多維數(shù)組。
例如:
b = rand(4,3,2)
MATLAB執(zhí)行上述語句,返回以下結(jié)果:
b(:,:,1) = 0.0344 0.7952 0.6463 0.4387 0.1869 0.7094 0.3816 0.4898 0.7547 0.7655 0.4456 0.2760 b(:,:,2) = 0.6797 0.4984 0.2238 0.6551 0.9597 0.7513 0.1626 0.3404 0.2551 0.1190 0.5853 0.5060
還能夠使用 cat() 函數(shù)來建立多維數(shù)組,它結(jié)合沿著指定的維度的數(shù)組列表:
cat() 函數(shù)的語法是:
B = cat(dim, A1, A2...)
注意:
B 是新建的數(shù)組;
A1, A2, ... 是要連接的陣列;
dim 是一起串聯(lián)陣列的維度。
詳細例子
在MATLAB中建立一個腳本文件,輸入下述代碼:
a = [9 8 7; 6 5 4; 3 2 1]; b = [1 2 3; 4 5 6; 7 8 9]; c = cat(3, a, b, [ 2 3 1; 4 7 8; 3 9 0])
運行該文件時,顯示結(jié)果:
c(:,:,1) = 9 8 7 6 5 4 3 2 1 c(:,:,2) = 1 2 3 4 5 6 7 8 9 c(:,:,3) = 2 3 1 4 7 8 3 9 0
MATLAB數(shù)組函數(shù)
MATLAB提供以下功能進行排序,旋轉(zhuǎn),置亂,重塑或移動數(shù)組的內(nèi)容。
函數(shù) | 目的 |
---|---|
length | 矢量長度或最大陣列尺寸 |
ndims | 數(shù)組維數(shù) |
numel | 數(shù)組元素的數(shù)目 |
size | 數(shù)組維度 |
iscolumn | 確定輸入是否是列向量 |
isempty | 確定數(shù)組是否為空 |
ismatrix | 確定輸入是否為矩陣 |
isrow | 確定輸入是否為行向量 |
isscalar | 確定輸入是否為標量 |
isvector | 確定輸入是否為矢量 |
blkdiag | 從輸入?yún)?shù)構(gòu)造塊對角矩陣 |
circshift | 循環(huán)移位 |
ctranspose | 復數(shù)共軛轉(zhuǎn)置 |
diag | 矩陣的對角矩陣和對角線 |
flipdim | 沿指定維度翻轉(zhuǎn)數(shù)組 |
fliplr | 從左到右翻轉(zhuǎn)矩陣 |
flipud | 將矩陣向下翻轉(zhuǎn) |
ipermute | n-維陣列的反置換維數(shù) |
permute | 重新排列 N 維數(shù)組的維數(shù) |
repmat | 復制和平鋪數(shù)組 |
reshape | 重塑數(shù)組 |
rot90 | 旋轉(zhuǎn)矩陣90度 |
shiftdim | 移位維度 |
issorted | 確定集合元素是否按排序順序排列 |
sort | 按升序或降序?qū)?shù)組元素進行排序 |
sortrows | 按升序?qū)π信判?br> |
squeeze | 刪除單維度 |
transpose | 轉(zhuǎn)置 |
vectorize | 矢量化表達式 |
詳細示例
上述的一些函數(shù)將由下列例子說明。
長度,尺寸和數(shù)量的元素:
在MATLAB中建立一個腳本文件,輸入下述代碼:
x = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9]; length(x) % length of x vector y = rand(3, 4, 5, 2); ndims(y) % no of dimensions in array y s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab']; numel(s) % no of elements in s
運行該文件,顯示以下結(jié)果:
ans = 8 ans = 4 ans = 23
循環(huán)移位的數(shù)組元素:
在MATLAB中建立一個腳本文件,輸入下述代碼:
a = [1 2 3; 4 5 6; 7 8 9] % the original array a b = circshift(a,1) % circular shift first dimension values down by 1. c = circshift(a,[1 -1]) % circular shift first dimension values % down by 1 % and second dimension values to the left % by 1.
運行該文件,顯示以下結(jié)果:
a = 1 2 3 4 5 6 7 8 9 b = 7 8 9 1 2 3 4 5 6 c = 8 9 7 2 3 1 5 6 4
MATLAB數(shù)組排序
在MATLAB中建立一個腳本文件,輸入下述代碼:
v = [ 23 45 12 9 5 0 19 17] % horizonal vector sort(v) %sorting v m = [2 6 4; 5 3 9; 2 0 1] % two dimensional array sort(m, 1) % sorting m along the row sort(m, 2) % sorting m along the column
運行該文件,顯示以下結(jié)果:
v = 23 45 12 9 5 0 19 17 ans = 0 5 9 12 17 19 23 45 m = 2 6 4 5 3 9 2 0 1 ans = 2 0 1 2 3 4 5 6 9 ans = 2 4 6 3 5 9 0 1 2
MATLAB單元陣列
單元陣列的陣列中每個單元格可以存儲不同的維度和數(shù)據(jù)類型的數(shù)組的索引單元格。
單元格函數(shù)用于建立一個單元陣列。
單元格函數(shù)的語法如下:
C = cell(dim) C = cell(dim1,...,dimN) D = cell(obj)
注意
C 是單元陣列;
dim 是一個標量整數(shù)或整數(shù)向量,指定單元格陣列C的尺寸;
dim1, ... , dimN 是標量整數(shù)指定尺寸的C;
obj 是以下內(nèi)容之一
Java 數(shù)組或?qū)ο?/p>
.NET陣列 System.String 類型或 System.Object
詳細例子
在MATLAB中建立一個腳本文件,輸入下述代碼:
c = cell(2, 5); c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}
運行該文件,顯示以下結(jié)果:
c = 'Red' 'Blue' 'Green' 'Yellow' 'White' [ 1] [ 2] [ 3] [ 4] [ 5]
MATLAB在單元格上陣列訪問數(shù)據(jù)
使用兩種方法來引用單元陣列的元素:
封閉的索引在第一個 bracket (),是指一組單元格
封閉的在大括號{},的索引單個單元格內(nèi)的數(shù)據(jù)
括在第一支架的索引,它指的是單元格的集。
單元陣列索引平穩(wěn)括號單元格集合。
例如:
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}; c(1:2,1:2)
MATLAB執(zhí)行上述語句,返回以下結(jié)果:
ans = 'Red' 'Blue' [ 1] [ 2]
同樣可以用花括號“{ }”索引訪問單元格的內(nèi)容。
例如:
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}; c{1, 2:4}
MATLAB執(zhí)行上述語句,返回以下結(jié)果:
ans = Blue ans = Green ans = Yellow
更多建議: