MATLAB 操作矩陣的常用函式

2021-09-05 18:51:38 字數 4194 閱讀 6338

函式名

作用size(x)

用於求矩陣x的大小

sort(x)

可對x進行公升序排序,x為向量、陣列、矩陣等等

find(x)

用來返回向量或者矩陣中不為0的元素的索引

numl(a)

返回陣列a中元素的個數

ismember(a,b)

集合成員判斷b中成員和a成員是否相等,相等的位置用1,否則用0

findstr(a,b),strfind(a,b)

在a,b中較長的字串中查詢較短的字串出現的次數

setdiff(a,b)

返回在陣列a中有b中沒有的值,並將其結果向量以公升序排序返回

intersect(a,b)

返回a和b共有的資料,但不包含重複項,將其結果按公升序排序

unique(x)

去掉矩陣x中重複的值並按公升序排序

1、size(x):用來求矩陣的大小

比如說乙個a是乙個3×4的二維矩陣:

size(a) %直接顯示出a大小

輸出:ans=

3 4

s=size(a)%返回乙個行向量s,s的第乙個元素是矩陣 的行數,第二個元素是矩陣的列數

輸出:s=

3 4

[r,c]=size(a)%將矩陣a的行數返回到第乙個輸出變數r,將矩陣的列數返回到第二個輸出變數c

輸出:r=3c=

4

size(a,n)如果在size函式的輸入引數中再新增一項n,並用1或2為n賦值,則 size將返回矩陣的行數或列數。其中r=size(a,1)該語句返回的時矩陣a的行數, c=size(a,2) 該語句返回的時矩陣a的列數。

來自 2、sort(x) :可以對引數的元素進行公升序排序或降序排

sort()的引數可以是向量,矩陣,陣列等等。當x是向量時,sort(x)對x的元素進行公升序排序;當x是矩陣時,sort(x)對x的每一列進行公升序排序;

.>a=magic(3)

a =8 1 6

3 5 7

4 9 2

.>sort(a)

ans =

3 1 2

4 5 6

8 9 7

y=sort(x,dim,mode)

引數dim表示對哪乙個維數進行排序,例如當x是乙個二維矩陣,當dim=1時表示對x的每一列進行排序,當dim=2時表示對x的每一行進行排序。

引數mode表示按哪一種模式進行排序,當mode=『ascend』的時進行公升序排序,當mode=『descend』時,進行降序排序。

y返回已經排好序的x。

3、find(x):用來返回向量或者矩陣中不為0的元素的位置索引

.> x = [1 -3 0;0 0 8;4 0 6]

x =1 -3 0

0 0 8

4 0 6

.> x = [1 0 2; 0 1 1; 0 0 4]

x =1 0 2

0 1 1

0 0 4

.> k = find(x)

k =157

89

find(x,k):返回前k的不為0的元素:

.>ind = find(x,2)

ind =

1 3

也可寫成:

ind = find(x,2,『first』)

ind =

1 3

返回最後k個不為0的元素:

ind = find(x,2,『last』)

ind =

8 9

[m,n] = find(b,2)返回的是矩陣b中大於2的座標。

[i,j,v]=find(a) 返回矩陣a中非零元素所在的行i,列j,和元素的值v(按所在位置先後順序輸出)

a=[3 2 0; -5 0 7; 0 0 1];

.> [i,j,v]=find(a)

i =121

23 j =112

33v =3-52

71

來自

4、numl(a):返回陣列a中的元素個數

5、ismember(a,b):集合成員,判斷b中成員是否和a中成員數值相等,相等的位置用1,否則為0

a = [5 3 4 2];

b = [2 4 4 4 6 8];

determine which elements of a are also in b.

lia = ismember(a,b)

lia =

0 0 1 1

a(3) and a(4) are found in b.

6、findstr(a,b)/stirfind(a,b):在a,b中較長的字串中查詢較短的字串出現的次數

matlab中這兩個字串查詢的函式findstr(), strfind()表明上看起來用法相似,效果也相似。

findstr(s1,s2)–在較長的字串中查詢較短的字串出現的次數,並返回其位置,因此無論s1,s2哪個為長字串,位置在前在後都沒有關係。

例:

s = 『find the starting indices of the shorter string.』;

findstr(s, 『the』)

ans =

6 30

findstr(『the』, s)

ans =

6 30

strfind(s1,s2)–or strfind(s1,pattern),因此其意思在s1中搜尋pattern

例:

s = 『find the starting indices of the pattern string』;

strfind(s, 『in』)

ans =

2 15 19 45

strfind(s, 『in』)

ans =

來自

7、setdiff(a,b):判斷兩個陣列中的不同元素

c = setdiff(a,b):

返回在a中有,而b中沒有的值,結果向量將以公升序排序返回。在集合論中,c = a - b.a和b也可以是字串細胞陣列。

c = setdiff(a,b,『rows』):

當a和b是具有相同列數的矩陣時,返回a中有而b中沒有的那些行

8、intersect(a,b):設定兩個陣列的交集

c = intersect(a,b) 返回 a 和 b 的共有資料,但是不包含重複項。c 已排序。

c = intersect(a,b,setorder) 以特定順序返回 c。setorder 可以是 『sorted』 或 『stable』。

[c, ia, ib] = intersect(a, b);這個函式是c返回a b的交集,ia,ib返回的是 交集 所在 陣列的指標

9、unique(a):去掉矩陣a中的重複元素

b = unique(a) 返回的是和a中一樣的值,但是沒有重複元素。產生的結果向量按公升序排序。a可以是乙個字串的單元陣列。b可能為行向量也可能為列向量。

b = unique(a,『rows』) 獲取矩陣a的不同行向量構成的矩陣。

[b,m,n] = unique(a) 也返回索引向量m和n,使得b = a(m)和a= b(n)。m的每乙個元素是最大的下標,使得b = a(m)。對於行的組合,b = a(m,:)和a=b(n,:)。 m為矩陣b中的元素在矩陣a中的位置。n為矩陣a中的元素在矩陣b中的位置。

Matlab中操作矩陣常用函式

函式 作用zeros 建立0矩陣 ones 建立全部為1的矩陣 rand 產生隨機矩陣 數列 true 邏輯數列1 false 邏輯數列0 eye對角矩陣 diag 對角矩陣 blkdiag 模組的對角矩陣 cat矩陣連線 vertcat 矩陣豎直連線 horzcat 矩陣水平連線 repelem ...

MATLAB基本矩陣函式和操作

eye 單位矩陣 zeros 全零矩陣 ones 全1矩陣 rand 均勻分布隨機陣 genmarkov 生成隨機markov矩陣 linspace 線性等分向量 logspace 對數等分向量 logm 矩陣對數運算 cumprod 矩陣元素累計乘 cumsum 矩陣元素累計和 toeplitz ...

MATLAB基本矩陣函式和操作

eye 單位矩陣 zeros 全零矩陣 ones 全1矩陣 rand 均勻分布隨機陣 genmarkov 生成隨機markov矩陣 linspace 線性等分向量 logspace 對數等分向量 logm 矩陣對數運算 cumprod 矩陣元素累計乘 cumsum 矩陣元素累計和 toeplitz ...