matlab中的陣列與矩陣
- 首先介紹陣列
在matlab中,有向量,陣列,矩陣的概念,本人感覺向量和陣列差不多,多行向量就是多維陣列,一維向量就是一維陣列。
建立一維陣列(向量)兩種方式:行向量a=[1 2 3]或者a=[1,2,3]
列向量a=[1;2;3]
多維陣列a=[1 2 3;2 3 4;3 4 5]這是3*3的陣列
向量可以轉置,比如b=a’;
陣列相關操作
A=[1 2 3;4 5 6;7 8 9];
B=[9 8 7; 6 5 4; 3 2 1];
a=A(1:2,:)-取A陣列第幾行元素(這裡是第1和2行)
a=A(:,1:2)-取A陣列第幾列元素(這裡是第1和2列)
a=A(2:4)-取A陣列第2個到第4個元素
a=A(1:end)-將元素正序排列
a=A(end:-1:1)-將元素反序排列
a=A([2 4])-取陣列A第2個和第4個元素
a=A(1,2)-取陣列第一行第一列元素
C=[A B]-將陣列AB橫向拼接
C=[A; B]-將陣列AB縱向拼接下面幾個操作要熟悉,改變陣列內容
A(A=1)=100;%將A陣列中為1元素全部變為100
A(A>4)=20;%將A陣列中大於4的元素都變為20
A(1,1)=10%將A數組裡1行1列元素變為10
下面幾個函式判斷陣列型別
isnumeric();%判斷是否為數值型陣列
isreal();%判斷是否為實數型陣列
isinteger();%判斷是否為整型陣列,(matlab預設儲存double型)
islogical();%判斷是否為邏輯型陣列
find()函式:查詢陣列元素然後修改元素,具體見下圖
sort()-對陣列元素進行排序(這個排序是對沒列元素排序),預設升序排列,具體見下圖:[C,I]=sort(A)-C是排序後陣列,I是排序後對應數的位置索引
- size()和length()函式
[M,N]=size(A)%返回陣列A的行數和列數
M=size(A,1)
N=size(B,2)
length(A)%若A為一維,返回A的長度,若A為二維,返回行列中較大長度值 - 然後是介紹矩陣(說明:在matlab中無是陣列還是矩陣都是按列來儲存的)
首先是一些特殊矩陣的建立
zeros(m,n)%建立全0矩陣
ones(m,n)%建立全1矩陣
eye(m,n)%建立對角線全為1 的矩陣
rand(m,n)%(0,1)隨機分佈的矩陣
randn(m,n)%相比上一個,均值為0,方差為1
magic(m,n)%魔方矩陣
對於矩陣的建立和元素訪問,很多和前面介紹的陣列相同
下面看圖訪問矩陣
訪問矩陣元素可以用單下標訪問和雙下標訪問
sub2ind()和ind2sub()函式進項訪問方式轉換;
A=[1:4;5:8]
ind1=sub2ind(size(A),2,3);%將索引(2,3)轉變為單下標索引
[i,j]=ind2sub(size(A),7);
矩陣的連線可以用函式cat(dim,A,B);horzcat(A,B);vertcat(A,B)
矩陣還可以進行塊操作repmat()函式;
A=[1:3;4:6];
B=repmat(A,2,3)%產生一個2*3大矩陣,每個元素都是矩陣塊A
B=repmat(A,[1,3])
對於函式blkdiag(),產生一輸入引數為對角線元素的大矩陣。
矩陣的刪除操作
比如A=rand(4,4)
對於矩陣的轉置,有點注意有復情況。
A=B.’和transpose()一樣,矩陣有複數,不發生變化
而用A=B’,則 除了轉置外,矩陣中複試要變為共軛複數。
然後是矩陣的尺度變換函式reshape(),注意元素總數不變;
呼叫形式:Y=reshape(X,m,n);
矩陣的find()函式用法和陣列中的find()差不多。sort()排序函式也差不多。
下篇繼續介紹矩陣基本知識