第九章矩阵的处理与运算_第1页
第九章矩阵的处理与运算_第2页
第九章矩阵的处理与运算_第3页
第九章矩阵的处理与运算_第4页
第九章矩阵的处理与运算_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

200910201第九章:

矩陣的處理與運算張智星jang@.tw.tw/~jang清大資工系多媒體檢索實驗室2009102029-1矩陣的索引或下標

矩陣

A中,位於第

i橫列、第

j直行的元素可表示為

A(i,j)i

j即是此元素的下標(Subscript)或索引(Index)MATLAB中,所有矩陣的內部表示法都是以直行為主的一維向量A(i,j)和

A(i+(j-1)*m)是完全一樣的~m為矩陣A的列數

我們可以使用一維或二維下標來存取矩陣200910203矩陣的索引或下標200910204矩陣的索引或下標可以使用矩陣下標來進行矩陣的索引(Indexing)A(4:5,2:3)-取出矩陣

A的第四、五橫列與二、三直行所形成的部份矩陣A([914;1015])-用一維下標的方式來達到同樣目的

用冒號(:),取出一整列或一整行

A(:,5)-取出矩陣A的第五個直行

end這個保留字來代表某一維度的最大值

A(:,end)-矩陣

A的最後一個直行

可以直接刪除矩陣的某一整個橫列或直行

A(2,:)=[]–

刪除A矩陣的第二列

A(:,[245])=[]-刪除

A矩陣的第二、四、五直行200910205矩陣的索引或下標可依次把矩陣A

和其倒數「並排」起來,得到新矩陣BB=[A1./A]-1./A是矩陣

A每個元素的倒數用

diag指令取出矩陣的對角線各元素

d=diag(B)-取出矩陣

B的對角線元素用

reshape指令來改變一個矩陣的維度

C=reshape(B,2,8)-將矩陣

B排成

2×8的新矩陣

C注意!!MATLAB會先將矩陣

B排成一個行向量(即MATLAB

內部的矩陣表示法),再將此行向量塞成2×8的新矩陣2009102069-2 特殊用途矩陣產生各種特殊用途矩陣的好用指令

:指令說明zeros(m,n)產生維度為

m×n,構成元素全為

0

的矩陣ones(m,n)產生維度為

m×n

,構成元素全為1

的矩陣eye(n)產生維度為n×n,對角線的各元素全為1

,其他各元素全為0

的單位矩陣pascal(m,n)產生維度為m×n的Pascal

矩陣vander(m,n)產生維度為m×n的Vandermonde

矩陣hilb(n)產生維度為n×n

的Hilbert

矩陣rand(m,n)產生[0,1]

均勻分佈的亂數矩陣,其維度為m×nrandn(m,n)產生µ=0,σ=1

的正規分佈亂數矩陣,其維度為m×nmagic(n)產生維度為n×n

的魔方陣,其各個直行、橫列及兩對角線的元素和都相等200910207Hilbert矩陣and魔方陣hilb(n)指令可以產生

n×n的Hilbert矩陣

Hilbert矩陣的特性:當矩陣變大時,其反矩陣會接近

Singular(即矩陣的行列式會接近於0)Hilbert

矩陣常被用來評估各種反矩陣計算方法的穩定性magic(n)可以產生一個

n×n的魔方陣(MagicMatrix),其各個直行、橫列及兩對角線的元素值總和都相等

200910208均勻和高斯分布rand指令及

randn指令則常用於產生亂數矩陣範例9-11:matrix11.mx1=rand(10000,1);x2=randn(10000,1);subplot(2,1,1);hist(x1,40);title('均勻分佈');subplot(2,1,2);hist(x2,40);title('高斯分佈');set(findobj(gcf,'type','patch'),…'EdgeColor','w'); %改邊線為白色2009102099-3 矩陣的數學運算

矩陣的加減與一般純量(Scalar)的加減類似相加或相減的矩陣必需具有相同的維度範例9-12:matrix12.m

C= 13375824矩陣與純量可以直接進行加減,MATLAB

會直接將加減應用到每一個元素

>>A=[12321]+5

A= 67876A=[12345620];B=[1324];C=A+B2009102010矩陣的乘法與除法純量對矩陣的乘或除,可比照一般寫法

>>A=[123,442]; >>C=A/3

>>B=2*A C= B= 41.0000147.3333 246884欲進行矩陣相乘,必需確認第一個矩陣的直行數目(ColumnDimension)必需等於第二個矩陣的橫列數目(RowDimension)範例9-13:matrix12.m

C= 345 6810

矩陣的除法,常藉由反矩陣或解線性方程式來達成A=[1;2];B=[3,4,5];C=A*B2009102011矩陣的次方運算矩陣的次方運算,可由「^」來達成,但矩陣必需是方陣,其次方運算才有意義範例9-14:matrix14.m

B= 916767 679167 676791在「*」,「/」及「^」之前加上一個句點,MATLAB將會執行矩陣內「元素對元素」(Element-by-element)

的運算

A=magic(3);B=A^2A=[12;45];B=[2;3];C=A.*B %注意「*」前面的句點D=A./B %注意「/」前面的句點E=A.^2 %注意「^」前面的句點2009102012排列組合的寫法在MATLAB中,由於計算上所容許的最大值只能算到170階層,假如今天我想要知道500取250的組合(也就是C500取250),那我有任何其他的方法嗎?Ans:

可以試看看這個偷雞步:x=251:500;y=1:250;z=prod(x./y)Ref:張智星老師網頁上的MATLAB常見問題集2009102013轉置和「共軛轉置」矩陣

複數矩陣z,其「共軛轉置」矩陣(ConjugateTranspose)可表示成矩陣z'

範例9-16:conjTranspose01.m

w= 1.0000-1.0000i3.0000 2.00001.0000-2.0000i

想得到任何矩陣z

的轉置(Transpose),則可表示成矩陣

z.'範例9-17:transpose01.m w= 1.0000+1.0000i3.0000 2.00001.0000+2.0000i

若z為實數,則

z'和

z.'的結果是一樣的

i=sqrt(-1); %單位虛數z=[1+i,2;3,1+2i];w=z' %共軛轉置(注意z後面的單引號)i=sqrt(-1); %單位虛數z=[1+i,2;3,1+2i];w=z.' %單純轉置(注意z

後面的句點及單引號)2009102014向量的p-norm一個向量a的p-norm可以定義為

p=2時,此即為向量a

的長度,或稱歐氏長度(EuclideanLength)

欲求一向量的

p-norm,可使用

norm指令

norm(x,p)範例9-18:normVector01.ma=[34];x=norm(a,1)%x=7y=norm(a,2)%y=5z=norm(a,inf)%z=42009102015矩陣的p-norm一個矩陣

A的

p-norm可以定義如下:norm指令亦可用於計算矩陣的

p-norm範例9-19:normMatrix01.mMATLAB有相當完整的數學函數,三角函數還有計算向量元素統計量的函數(課本

9-15~9-17)A=[123;456;789];norm(A,2)%ans=16.84812009102016Sort指令sort指令可對向量元素進行排序(Sorting)範例9-20:sort01.m

sorted= 13458 index= 41523sorted是排序後的向量,index則是每個排序後的元素在原向量

x的位置

x(index)即等於

sorted向量如何使用

sort指令加上前例中的

sorted及

index來求得原先的向量

x?x=[35814];[sorted,index]=sort(x) %對矩陣

x的元素進行排序

2009102017矩陣的最大元素找出一矩陣最大元素的位置

範例9-21:max01.m

colMax=2324252122 colMaxIndex= 21543colMax代表每一直行的最大值,colMaxIndex則是每一直行出現最大值的位置求得x

的最大元素的位置範例9-22:max02.m

Maxvalue=x(5,3)=25x的最大元素即是

maxValue,發生位置為

[colMaxIndex(maxIndex),maxIndex]=[5,3]若只要找出一矩陣

x的最大值,可輸入

max(max)或是

max(x(:))x=magic(5);[colMax,colMaxIndex]=max(x)x=magic(5);[colMax,colMaxIndex]=max(x);[maxValue,maxIndex]=max(colMax);fprintf('Maxvalue=x(%d,%d)=%d\n',colMaxIndex(maxIndex),maxIndex,maxValue);20091020189-4 矩陣的內部資料型態一般矩陣的內部資料型態都是

double(雙精準浮點數),但在

MATLAB5.3版之後,也支援不同長度的整數與浮點數資料態

指令說明int8轉換成帶正負號、8位元的整數,其值域為

[-128,127]int16轉換成帶正負號、16位元的整數,其值域為

[-32768,32767]int32轉換成帶正負號、32位元的整數,其值域為

[-231,231-1]uint8轉換成不帶正負號、8位元的整數,其值域為

[0,255]uint16轉換成不帶正負號、16位元的整數,其值域為

[0,65535]uint32轉換成不帶正負號、32位元的整數,其值域為

[0,232-1]single轉換成

single(單精準浮點數),佔用32位元(4bytes)double轉換成double(雙精準浮點數),佔用64位元(8bytes)

char轉換成字元或字串,每個字元佔用(16位元)(2bytes)2009102019不同資料的儲存我們要節省記憶體空間,可以依矩陣元素值的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论