- Matlab 教程
- MATLAB - 首頁
- MATLAB - 概述
- MATLAB - 特性
- MATLAB - 環境設定
- MATLAB - 編輯器
- MATLAB - 線上版
- MATLAB - 工作區
- MATLAB - 語法
- MATLAB - 變數
- MATLAB - 命令
- MATLAB - 資料型別
- MATLAB - 運算子
- MATLAB - 日期和時間
- MATLAB - 數字
- MATLAB - 隨機數
- MATLAB - 字串和字元
- MATLAB - 文字格式化
- MATLAB - 時間表
- MATLAB - M 檔案
- MATLAB - 冒號表示法
- MATLAB - 資料匯入
- MATLAB - 資料匯出
- MATLAB - 資料歸一化
- MATLAB - 預定義變數
- MATLAB - 決策
- MATLAB - 決策語句
- MATLAB - if end 語句
- MATLAB - if else 語句
- MATLAB - if…elseif else 語句
- MATLAB - 巢狀 if 語句
- MATLAB - switch 語句
- MATLAB - 巢狀 switch
- MATLAB - 迴圈
- MATLAB - 迴圈
- MATLAB - for 迴圈
- MATLAB - while 迴圈
- MATLAB - 巢狀迴圈
- MATLAB - break 語句
- MATLAB - continue 語句
- MATLAB - end 語句
- MATLAB - 陣列
- MATLAB - 陣列
- MATLAB - 向量
- MATLAB - 轉置運算子
- MATLAB - 陣列索引
- MATLAB - 多維陣列
- MATLAB - 相容陣列
- MATLAB - 分類陣列
- MATLAB - 元胞陣列
- MATLAB - 矩陣
- MATLAB - 稀疏矩陣
- MATLAB - 表格
- MATLAB - 結構體
- MATLAB - 陣列乘法
- MATLAB - 陣列除法
- MATLAB - 陣列函式
- MATLAB - 函式
- MATLAB - 函式
- MATLAB - 函式引數
- MATLAB - 匿名函式
- MATLAB - 巢狀函式
- MATLAB - 返回語句
- MATLAB - 無返回值函式
- MATLAB - 區域性函式
- MATLAB - 全域性變數
- MATLAB - 函式控制代碼
- MATLAB - 濾波器函式
- MATLAB - 階乘
- MATLAB - 私有函式
- MATLAB - 子函式
- MATLAB - 遞迴函式
- MATLAB - 函式優先順序順序
- MATLAB - map 函式
- MATLAB - mean 函式
- MATLAB - end 函式
- MATLAB - 錯誤處理
- MATLAB - 錯誤處理
- MATLAB - try…catch 語句
- MATLAB - 除錯
- MATLAB - 繪圖
- MATLAB - 繪圖
- MATLAB - 繪製陣列
- MATLAB - 繪製向量
- MATLAB - 條形圖
- MATLAB - 直方圖
- MATLAB - 圖形
- MATLAB - 二維線圖
- MATLAB - 三維圖
- MATLAB - 格式化繪圖
- MATLAB - 對數座標軸圖
- MATLAB - 繪製誤差條
- MATLAB - 繪製三維等高線圖
- MATLAB - 極座標圖
- MATLAB - 散點圖
- MATLAB - 繪製表示式或函式
- MATLAB - 繪製矩形
- MATLAB - 繪製頻譜圖
- MATLAB - 繪製網格曲面圖
- MATLAB - 繪製正弦波
- MATLAB - 插值
- MATLAB - 插值
- MATLAB - 線性插值
- MATLAB - 二維陣列插值
- MATLAB - 三維陣列插值
- MATLAB - 多項式
- MATLAB - 多項式
- MATLAB - 多項式加法
- MATLAB - 多項式乘法
- MATLAB - 多項式除法
- MATLAB - 多項式的導數
- MATLAB - 變換
- MATLAB - 變換函式
- MATLAB - 拉普拉斯變換
- MATLAB - 拉普拉斯濾波器
- MATLAB - 高斯-拉普拉斯濾波器
- MATLAB - 逆傅立葉變換
- MATLAB - 傅立葉變換
- MATLAB - 快速傅立葉變換
- MATLAB - 二維逆餘弦變換
- MATLAB - 為座標軸新增圖例
- MATLAB - 面向物件
- MATLAB - 面向物件程式設計
- MATLAB - 類和物件
- MATLAB - 函式過載
- MATLAB - 運算子過載
- MATLAB - 使用者自定義類
- MATLAB - 複製物件
- MATLAB - 代數
- MATLAB - 線性代數
- MATLAB - 高斯消元法
- MATLAB - 高斯-約旦消元法
- MATLAB - 簡化行階梯形
- MATLAB - 特徵值和特徵向量
- MATLAB - 積分
- MATLAB - 積分
- MATLAB - 二重積分
- MATLAB - 梯形法則
- MATLAB - 辛普森法則
- MATLAB - 其他
- MATLAB - 微積分
- MATLAB - 微分
- MATLAB - 矩陣的逆
- MATLAB - GNU Octave
- MATLAB - Simulink
- MATLAB - 有用資源
- MATLAB - 快速指南
- MATLAB - 有用資源
- MATLAB - 討論
MATLAB - 陣列
在 MATLAB 中,所有資料型別的所有變數都是多維陣列。向量是一維陣列,矩陣是二維陣列。
我們已經討論了向量和矩陣。在本章中,我們將討論多維陣列。但是,在此之前,讓我們討論一些特殊型別的陣列。
MATLAB 中的特殊陣列
在本節中,我們將討論一些建立特殊陣列的函式。對於所有這些函式,單個引數建立一個方陣,雙引數建立一個矩形陣列。
zeros() 函式建立一個全零陣列 -
例如 -
zeros(5)
MATLAB 將執行上述語句並返回以下結果 -
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() 函式建立一個全一陣列 -
例如 -
ones(4,3)
MATLAB 將執行上述語句並返回以下結果 -
ans =
1 1 1
1 1 1
1 1 1
1 1 1
eye() 函式建立一個單位矩陣。
例如 -
eye(4)
MATLAB 將執行上述語句並返回以下結果 -
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
rand() 函式建立一個區間 (0,1) 上均勻分佈的隨機數陣列 -
例如 -
rand(3, 5)
MATLAB 將執行上述語句並返回以下結果 -
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
幻方
幻方是一個正方形,當其元素按行、列或對角線相加時,得到相同的和。
magic() 函式建立一個幻方陣列。它接受一個單引數,該引數給出正方形的大小。該引數必須是一個大於或等於 3 的標量。
magic(4)
MATLAB 將執行上述語句並返回以下結果 -
ans = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1
多維陣列
具有超過兩個維度的陣列在 MATLAB 中稱為多維陣列。MATLAB 中的多維陣列是普通二維矩陣的擴充套件。
通常,為了生成多維陣列,我們首先建立一個二維陣列並對其進行擴充套件。
例如,讓我們建立一個二維陣列 a。
a = [7 9 5; 6 1 9; 4 3 2]
MATLAB 將執行上述語句並返回以下結果 -
a = 7 9 5 6 1 9 4 3 2
陣列 a 是一個 3x3 陣列;我們可以透過提供如下值來為 a 新增第三維 -
a(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]
MATLAB 將執行上述語句並返回以下結果 -
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() 函式建立多維陣列。
例如,
b = rand(4,3,2)
MATLAB 將執行上述語句並返回以下結果 -
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() 函式構建多維陣列。它沿著指定的維度連線一系列陣列 -
cat() 函式的語法為 -
B = cat(dim, A1, A2...)
其中,
B 是建立的新陣列
A1、A2、... 是要連線的陣列
dim 是要沿其連線陣列的維度
示例
建立一個指令碼檔案,並將以下程式碼鍵入其中 -
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])
執行檔案時,它將顯示 -
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 提供以下函式來排序、旋轉、置換、重塑或移動陣列內容。
| 函式 | 用途 |
|---|---|
| length | 向量的長度或最大陣列維度 |
| ndims | 陣列維數 |
| numel | 陣列元素個數 |
| size | 陣列維度 |
| iscolumn | 確定輸入是否為列向量 |
| isempty | 確定陣列是否為空 |
| ismatrix | 確定輸入是否為矩陣 |
| isrow | 確定輸入是否為行向量 |
| isscalar | 確定輸入是否為標量 |
| isvector | 確定輸入是否為向量 |
| blkdiag | 根據輸入引數構造塊對角矩陣 |
| circshift | 迴圈移動陣列 |
| ctranspose | 共軛轉置 |
| diag | 對角矩陣和矩陣的對角線 |
| flipdim | 沿指定維度翻轉陣列 |
| fliplr | 從左到右翻轉矩陣 |
| flipud | 從上到下翻轉矩陣 |
| ipermute | 反轉 N 維陣列的維度置換 |
| permute | 重新排列 N 維陣列的維度 |
| repmat | 複製和平鋪陣列 |
| reshape | 重塑陣列 |
| rot90 | 將矩陣旋轉 90 度 |
| shiftdim | 移動維度 |
| issorted | 確定集合元素是否按排序順序排列 |
| sort | 按升序或降序對陣列元素進行排序 |
| sortrows | 按升序對行進行排序 |
| squeeze | 刪除單例維度 |
| transpose | 轉置 |
| vectorize | 向量化表示式 |
示例
以下示例說明了上面提到的一些函式。
長度、維度和元素個數 -
建立一個指令碼檔案,並將以下程式碼鍵入其中 -
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
執行檔案時,它將顯示以下結果 -
ans = 8 ans = 4 ans = 23
陣列元素的迴圈移動 -
建立一個指令碼檔案,並將以下程式碼鍵入其中 -
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.
執行檔案時,它將顯示以下結果 -
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
排序陣列
建立一個指令碼檔案,並將以下程式碼鍵入其中 -
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
執行檔案時,它將顯示以下結果 -
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
元胞陣列
元胞陣列是由索引單元組成的陣列,每個單元可以儲存不同維度和資料型別的陣列。
cell 函式用於建立元胞陣列。cell 函式的語法為 -
C = cell(dim) C = cell(dim1,...,dimN) D = cell(obj)
其中,
C 是元胞陣列;
dim 是一個標量整數或整數向量,它指定元胞陣列 C 的維度;
dim1, ... , dimN 是指定 C 維度的標量整數;
obj 是以下之一 -
- Java 陣列或物件
- .NET 型別為 System.String 或 System.Object 的陣列
示例
建立一個指令碼檔案,並將以下程式碼鍵入其中 -
c = cell(2, 5);
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}
執行檔案時,它將顯示以下結果 -
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
}
訪問元胞陣列中的資料
有兩種方法可以引用元胞陣列的元素 -
- 用第一個括號 () 括起來索引,以引用單元集
- 用大括號 {} 括起來索引,以引用單個單元中的資料
當用第一個括號括起來索引時,它指的是單元集。
圓括號中的元胞陣列索引指的是單元集。
例如 -
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c(1:2,1:2)
MATLAB 將執行上述語句並返回以下結果 -
ans =
{
[1,1] = Red
[2,1] = 1
[1,2] = Blue
[2,2] = 2
}
您還可以透過用大括號索引來訪問單元的內容。
例如 -
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c{1, 2:4}
MATLAB 將執行上述語句並返回以下結果 -
ans = Blue ans = Green ans = Yellow