鍍金池/ 教程/ 數(shù)據(jù)分析&挖掘/ Matlab數(shù)組
Matlab代數(shù)(方程求解)
Matlab開(kāi)發(fā)環(huán)境設(shè)置
Matlab GNU Octave
Matlab字符串
Matlab矩陣
Matlab微分和導(dǎo)數(shù)
Matlab數(shù)字
Matlab數(shù)據(jù)導(dǎo)入
Matlab整合集成
Matlab冒號(hào)符號(hào)
Matlab變量
Matlab數(shù)組
Matlab運(yùn)算符
Matlab數(shù)據(jù)導(dǎo)出
Matlab向量
Matlab命令
Matlab決策
Matlab微積分
Matlab圖形
Matlab教程
Matlab繪圖
Matlab多項(xiàng)式
Matlab .m腳本文件
Matlab循環(huán)
Matlab基礎(chǔ)語(yǔ)法
Matlab函數(shù)
Matlab轉(zhuǎn)換
Matlab概述
Matlab數(shù)據(jù)類型

Matlab數(shù)組

MATLAB中所有數(shù)據(jù)類型的所有變量都是多維數(shù)組。向量是一維數(shù)組,矩陣是二維數(shù)組。

我們前面已經(jīng)討論和學(xué)習(xí)過(guò)向量和矩陣。 在本章中,將討論和學(xué)習(xí)多維數(shù)組。 然而,在此之前,讓我們先學(xué)習(xí)一些特殊類型的數(shù)組。

MATLAB中的特殊數(shù)組

在本節(jié)中,我們將討論學(xué)習(xí)一些創(chuàng)建一些特殊數(shù)組的函數(shù)。對(duì)于這些函數(shù),單個(gè)參數(shù)創(chuàng)建一個(gè)正方形數(shù)組,雙參數(shù)創(chuàng)建矩形數(shù)組。

zeros()函數(shù)是用來(lái)創(chuàng)建一個(gè)全零的數(shù)組 -

例如 -

zeros(5)

執(zhí)行上面示例代碼,得到以下結(jié)果 -

Trial>> zeros(5)

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ù)創(chuàng)建一個(gè)所有元素為1的數(shù)組 -

例如 -

ones(4,3)

執(zhí)行上面示例代碼,得到以下結(jié)果 -

Trial>> ones(4,3)

ans =

     1     1     1
     1     1     1
     1     1     1
     1     1     1

eye()函數(shù)創(chuàng)建一個(gè)單位矩陣。

例如 -

eye(4)

執(zhí)行上面示例代碼,得到以下結(jié)果 -

Trial>> eye(4)

ans =

     1     0     0     0
     0     1     0     0
     0     0     1     0
     0     0     0     1

rand()函數(shù)在(0,1) - 上創(chuàng)建均勻分布的隨機(jī)數(shù)的數(shù)組 -

例如 -

rand(3, 5)

執(zhí)行上面示例代碼,得到以下結(jié)果 -

Trial>> rand(3, 5)

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

魔方

魔方是一個(gè)平方,它產(chǎn)生相同的和,它的元素被逐行,逐列或者對(duì)角線地添加時(shí)。

magic()函數(shù)創(chuàng)建一個(gè)魔術(shù)方陣。這需要一個(gè)參數(shù),指定正方形的大小。 參數(shù)必須是大于或等于3的標(biāo)量。

magic(4)

執(zhí)行上面示例代碼,得到以下結(jié)果 -

Trial>> magic(4)

ans =

    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

多維數(shù)組

具有二維以上的數(shù)組在MATLAB中被稱為多維數(shù)組。MATLAB中的多維數(shù)組是正常二維矩陣的擴(kuò)展。

通常要生成一個(gè)多維數(shù)組,首先創(chuàng)建一個(gè)二維數(shù)組然后再擴(kuò)展它。

例如,讓我們創(chuàng)建一個(gè)二維數(shù)組a

a = [7 9 5; 6 1 9; 4 3 2]

執(zhí)行上面示例代碼,得到以下結(jié)果 -

Trial>> a = [7 9 5; 6 1 9; 4 3 2]

a =

     7     9     5
     6     1     9
     4     3     2

數(shù)組a3×3數(shù)組; 可以通過(guò)提供以下值來(lái)添加第三維:

a(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]

執(zhí)行上面示例代碼,得到以下結(jié)果 -

a =

ans(:,:,1) =

   0   0   0
   0   0   0
   0   0   0

ans(:,:,2) =

   1   2   3
   4   5   6
   7   8   9

還可以使用ones(),zeros()rand()函數(shù)來(lái)創(chuàng)建多維數(shù)組。

例如,

b = rand(4,3,2)

執(zhí)行上面示例代碼,得到以下結(jié)果 -

Trial>> b = rand(4,3,2)

b(:,:,1) =

    0.1419    0.9595    0.9340
    0.4218    0.6557    0.6787
    0.9157    0.0357    0.7577
    0.7922    0.8491    0.7431


b(:,:,2) =

    0.3922    0.0318    0.8235
    0.6555    0.2769    0.6948
    0.1712    0.0462    0.3171
    0.7060    0.0971    0.9502

也可以使用cat()函數(shù)來(lái)構(gòu)建多維數(shù)組。它沿著指定的維度連接數(shù)組列表 -

cat()函數(shù)的語(yǔ)法是 -

B = cat(dim, A1, A2...)

其中,

  • B是創(chuàng)建的新陣列
  • A1,A2...是要連接的數(shù)組
  • dim是連接數(shù)組的大小

例子

創(chuàng)建腳本文件并在其中鍵入以下代碼 -

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])

執(zhí)行上面示例代碼,得到以下結(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

數(shù)組函數(shù)

MATLAB提供以下函數(shù)來(lái)對(duì)數(shù)組內(nèi)容進(jìn)行排序,旋轉(zhuǎn),排列,重新成形或移位。

函數(shù) 描述
length 向量的大小或數(shù)組的長(zhǎng)度
ndims 數(shù)組的維數(shù)
numel 數(shù)組的元素?cái)?shù)量
size 數(shù)組的維度
iscolumn 確定輸入是否為列向量
isempty 確定數(shù)組是否為空
ismatrix 確定輸入是否為矩陣
isrow 確定輸入是否為行向量
isscalar 確定輸入是否為標(biāo)量
isvector 確定輸入是否為向量
blkdiag 從輸入?yún)?shù)構(gòu)造塊對(duì)角矩陣
circshift 循環(huán)移位
ctranspose 復(fù)共軛轉(zhuǎn)置
diag 矩陣對(duì)角矩陣和對(duì)角線
flipdim 沿著指定的尺寸翻轉(zhuǎn)數(shù)組
fliplr 從左到右翻轉(zhuǎn)矩陣
flipud 向下翻轉(zhuǎn)矩陣
ipermute 反轉(zhuǎn)N-D陣列的置換維度
permute 重新排列N-D數(shù)組的維度
repmat 復(fù)制和平鋪數(shù)組
reshape 重塑數(shù)組
rot90 旋轉(zhuǎn)矩陣90度
shiftdim 移動(dòng)維度
issorted 確定設(shè)置元素是否按排序順序
sort 按升序或降序排列數(shù)組元素
sortrows 按升序排列行
squeeze 刪除單例維度
transpose 轉(zhuǎn)置
vectorize 向量化表達(dá)式

例子

以下的例子說(shuō)明了上面提到的一些函數(shù)。

長(zhǎng)度,尺寸和元素?cái)?shù)量:

創(chuàng)建腳本文件并鍵入以下代碼 -

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

運(yùn)行文件時(shí),顯示以下結(jié)果 -

ans =  8
ans =  4
ans =  23

數(shù)組元素的循環(huán)移位

創(chuàng)建腳本文件并在其中鍵入以下代碼 -

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.

運(yùn)行文件文件時(shí),顯示以下結(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

排序數(shù)組

創(chuàng)建腳本文件并在其中鍵入以下代碼 -

v = [ 23 45 12 9 5 0 19 17]  % horizontal 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

運(yùn)行文件文件時(shí),顯示以下結(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

單元陣列

單元格陣列是索引單元的數(shù)組,其中每個(gè)單元格可以存儲(chǔ)不同維度和數(shù)據(jù)類型的數(shù)組。

單元格函數(shù)用于創(chuàng)建單元格數(shù)組。單元格函數(shù)的語(yǔ)法是 -

C = cell(dim)
C = cell(dim1,...,dimN)
D = cell(obj)

其中,

  • C是單元陣列;
  • dim是一個(gè)整數(shù)或整數(shù)向量,它指定單元格數(shù)組C的維數(shù);
  • dim1,...,dimN是指定C大小的標(biāo)量整數(shù);
  • obj是以下之一:
    • Java數(shù)組或?qū)ο?/li>
    • 類型為System.StringSystem.Object的.NET數(shù)組

示例

創(chuàng)建腳本文件并在其中鍵入以下代碼 -

c = cell(2, 5);
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}

運(yùn)行文件時(shí),得到以下結(jié)果 -

c = 
{
  [1,1] = Red
  [2,1] =  1
  [1,2] = Blue
  [2,2] =  2
  [1,3] = Green
  [2,3] =  3
  [1,4] = Yellow
  [2,4] =  4
  [1,5] = White
  [2,5] =  5
}

訪問(wèn)單元格數(shù)組數(shù)據(jù)

有兩種方法來(lái)引用單元格數(shù)組的元素 -

  • 將第一個(gè)括號(hào)()中的索引包圍,以引用單元格集
  • 將大括號(hào){}中的索引括起來(lái),以引用單個(gè)單元格內(nèi)的數(shù)據(jù)

當(dāng)將索引包圍在第一個(gè)括號(hào)中時(shí),它指的是這組單元格。

括號(hào)中的單元格數(shù)組索引是指單元格集。

例如:

c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c(1:2,1:2)

運(yùn)行文件時(shí),得到以下結(jié)果 -

ans = 
{
  [1,1] = Red
  [2,1] =  1
  [1,2] = Blue
  [2,2] =  2
}

還可以通過(guò)用花括號(hào)索引來(lái)訪問(wèn)單元格的內(nèi)容。

例如 -

c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c{1, 2:4}

運(yùn)行文件時(shí),得到以下結(jié)果 -

ans = Blue
ans = Green
ans = Yellow