1. 程式人生 > >matlab中的陣列與矩陣

matlab中的陣列與矩陣

  1. 首先介紹陣列

在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’;

  1. 陣列相關操作
    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是排序後對應數的位置索引
這裡寫圖片描述

這裡寫圖片描述

  1. size()和length()函式
    [M,N]=size(A)%返回陣列A的行數和列數
    M=size(A,1)
    N=size(B,2)
    length(A)%若A為一維,返回A的長度,若A為二維,返回行列中較大長度值
  2. 然後是介紹矩陣(說明:在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()排序函式也差不多。

下篇繼續介紹矩陣基本知識