如何在MATLAB中使用標(biāo)量擴(kuò)展、邏輯下標(biāo)和find函數(shù)
標(biāo)量擴(kuò)展 MATLAB提供多種方法將矩陣和標(biāo)量合并在一起,其中之一是通過減去標(biāo)量來從矩陣中減去每個(gè)元素。舉個(gè)例子,對于幻方矩陣A,其元素的平均值為8.5。我們可以通過執(zhí)行B A - 8.5來生成一
標(biāo)量擴(kuò)展
MATLAB提供多種方法將矩陣和標(biāo)量合并在一起,其中之一是通過減去標(biāo)量來從矩陣中減去每個(gè)元素。舉個(gè)例子,對于幻方矩陣A,其元素的平均值為8.5。我們可以通過執(zhí)行B A - 8.5來生成一個(gè)列總和為零的矩陣。
邏輯下標(biāo)
邏輯向量是根據(jù)邏輯和關(guān)系運(yùn)算創(chuàng)建的向量,它可以用于引用子數(shù)組。假設(shè)X是一個(gè)普通矩陣,L是由某個(gè)邏輯運(yùn)算生成的同等大小的矩陣。那么,X(L)表示X的元素,其中L的元素為非零。通過將邏輯運(yùn)算指定為下標(biāo)表達(dá)式,我們可以在一個(gè)步驟中完成這種下標(biāo)操作。
舉個(gè)例子,假設(shè)我們有以下數(shù)據(jù)集x:
x [2.1 1.7 1.6 1.5 NaN 1.9 1.8 1.5 5.1 1.8 1.4 2.2 1.6 1.8];
如果我們想要刪除缺失的數(shù)據(jù),即使用邏輯索引刪除NaN值,我們可以使用isfinite(x),該函數(shù)對于所有有限數(shù)值返回true,對于NaN和Inf返回false:
x x(isfinite(x));
現(xiàn)在,我們發(fā)現(xiàn)存在一個(gè)與其他項(xiàng)很不一樣的觀測值,即5.1。這是一個(gè)離群值。我們可以使用下面的語句刪除離群值,即比均值大三倍標(biāo)準(zhǔn)差的元素:
x x(abs(x-mean(x)) lt; 3*std(x));
標(biāo)量擴(kuò)展示例
再舉一個(gè)標(biāo)量擴(kuò)展的例子,我們可以使用邏輯索引和標(biāo)量擴(kuò)展將非質(zhì)數(shù)設(shè)置為0,以突出顯示丟勒幻方矩陣中的質(zhì)數(shù)位置??梢詧?zhí)行以下命令:
A(~isprime(A)) 0;
find函數(shù)
find函數(shù)可用于確定與指定邏輯條件相符的數(shù)組元素的索引。最簡單的形式下,find函數(shù)返回索引的列向量。通過轉(zhuǎn)置該向量,我們可以得到索引的行向量。例如,再次考慮丟勒幻方矩陣,我們可以執(zhí)行以下命令找到幻方矩陣中的質(zhì)數(shù)的位置:
k find(isprime(A))';
通過使用一維索引k,我們可以選取幻方矩陣中的質(zhì)數(shù)的位置。例如,可以執(zhí)行以下命令:
A(k)
當(dāng)將k用作賦值語句的左側(cè)索引時(shí),矩陣結(jié)構(gòu)將保持不變:
A(k) NaN;