日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Matlab的数组索引

發布時間:2023/12/31 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Matlab的数组索引 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在 MATLAB中,根據元素在數組中的位置(索引)訪問數組元素的方法主要有三種:按位置索引、線性索引和邏輯索引。

按元素位置進行索引

最常見的方法是顯式指定元素的索引。例如,要訪問矩陣中的某個元素,請依序指定該元素的行號和列號。

A = [1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]A = 4×4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16e = A(3,2)e = 10

e 是 A 中位于 3,2 位置(第三行第二列)的元素。

還可以在一個向量中指定多個元素的索引,從而一次引用多個元素。例如,訪問 A 的第二行中的第一個和第三個元素。

r = A(2,[1 3])r = 1×2 5 7

要訪問某個行范圍或列范圍內的元素,請使用 colon。例如,訪問 A 中第一到三行、第二到四列中的元素。

r = A(1:3,2:4)r = 3×3 2 3 4 6 7 8 10 11 12

計算 r 的另一種方法是使用關鍵字 end 指定第二直至最后一列。通過此方法,可以直接指定最后一列,而不必知道 A 中到底有多少列。

r = A(1:3,2:end)r = 3×3 2 3 4 6 7 8 10 11 12

如果要訪問所有行或所有列,只使用冒號運算符即可。例如,返回 A 的整個第三列。

r = A(:,3)r = 4×1 3 7 11 15

通常,可以使用索引來訪問 MATLAB 中任何數組的元素,而不管其數據類型或維度如何。例如,直接訪問 datetime 數組的列。

t = [datetime(2018,1:5,1); datetime(2019,1:5,1)]t = 2x5 datetime 01-Jan-2018 01-Feb-2018 01-Mar-2018 01-Apr-2018 01-May-2018 01-Jan-2019 01-Feb-2019 01-Mar-2019 01-Apr-2019 01-May-2019march1 = t(:,3)march1 = 2x1 datetime 01-Mar-2018 01-Mar-2019

對于更高維度的數組,可以擴展語法以匹配數組維度。假設有一個隨機的 3×3×3 數值數組。訪問位于該數組第一頁中第二行第三列的元素。

A = rand(3,3,3);e = A(2,3,1)e = 0.5469

使用單個索引進行索引

訪問數組元素的另一種方法是只使用單個索引,而不管數組的大小或維度如何。此方法稱為線性索引。雖然 MATLAB 根據定義的大小和形狀顯示數組,但實際上數組在內存中都存儲為單列元素。我們可以使用矩陣來直觀地理解這一概念。下面的數組雖然顯示為 3×3 矩陣,但 MATLAB 將它存儲為單列,由 A 的各列順次連接而成。存儲的向量包含由元素 12、45、33、36、29、25、91、48、11 組成的序列,可以用單個冒號全部顯示。

A = [12 36 91; 45 29 48; 33 25 11]A = 3×3 12 36 91 45 29 48 33 25 11Alinear = A(:)Alinear = 9×1 12 45 33 36 29 25 91 48 11

例如,A 的第 3,2 個元素是 25,您可以使用語法 A(3,2)?訪問它。您也可以使用語法 A(6)?訪問此元素,因為 25 是存儲的向量序列中的第六個元素。

e = A(3,2)e = 25 elinear = A(6)elinear = 25

線性索引在視覺上可能不太直觀,但在執行某些不依賴于數組大小或形狀的計算時很有用。例如,可以輕松地對 A 的所有元素求和,而無需指定 sum 函數的第二個參數。

s = sum(A(:))s = 330

sub2ind 和 ind2sub 函數可用于在數組的原始索引和線性索引之間進行轉換。例如,計算 A 的第 3,2 個元素的線性索引。

linearidx = sub2ind(size(A),3,2)linearidx = 6

從線性索引轉換回行和列形式。

[row,col] = ind2sub(size(A),6)row = 3 col = 2

使用邏輯值進行索引

使用 true 和 false 邏輯指示符也可以對數組進行索引,在處理條件語句時尤其便利。例如,假設想知道矩陣 A 中的元素是否小于另一個矩陣 B 中的對應元素。當 A 中的元素小于 B 中的對應元素時,小于號運算符返回元素為 1 的邏輯數組。

A = [1 2 6; 4 3 6]A = 2×3 1 2 6 4 3 6B = [0 3 7; 3 7 5]B = 2×3 0 3 7 3 7 5ind = A<Bind = 2x3 logical array 0 1 1 0 1 0

現在已經知道滿足條件的元素的位置,可以使用 ind 作為索引數組來檢查各個值。MATLAB 將 ind 中值 1 的位置與 A 和 B 中的對應元素進行匹配,并在列向量中列出它們的值。

Avals = A(ind)Avals = 3×1 2 3 6Bvals = B(ind)Bvals = 3×1 3 7 7

MATLAB 中的 is 函數還返回邏輯數組,指示輸入中的哪些元素滿足特定條件。例如,使用 ismissing 函數檢查 string 向量中的哪些元素是缺失值。

str = ["A" "B" missing "D" "E" missing];ind = ismissing(str)ind = 1x6 logical array 0 0 1 0 0 1

假設要查找非缺失值元素的值。將?~?運算符和索引向量 ind 結合使用即可實現此目的。

strvals = str(~ind)strvals = 1x4 string "A" "B" "D" "E"

?

總結

以上是生活随笔為你收集整理的Matlab的数组索引的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。