1. 用Matlab怎麼將一個矩陣化為行最簡矩陣
對矩陣實行初等行變換,化為行最簡形矩陣,其特點是:非零行的第一個非零元為1,且這些非零元所在的列的其他元素都為0
x=[2 -1 -1 1 2;1 1 -2 1 4;4 -6 2 -2 4;3 6 -9 7 9]
object=x;
[m,n]=size(object);
for i=1:m
temp(1:m,1)=object(1:m,i);
if( all(abs(temp(i:m,1))<eps))
continue;
end
N_zero=find(temp);
clear temp;
[p,q]=size(N_zero);
clear Molus;
if( all(abs(object(i,1:n))<eps))
continue;
end
z=1;
for j=1:p
T_M=object(N_zero(j,1),i)/object(N_zero(i,1),i);
if z==1
Molus=T_M;
z=z+1;
continue;
end
Molus=[Molus,T_M];
z=z+1;
end
%初等行變換:把某一行所有元素的k倍加到另一行對應的元素上去(第j行的k倍加到第i行上,記做ri+k*rj)
for j=1:p
if j==i
continue;
end
object(N_zero(j,1),1:n)=object(N_zero(j,1),1:n)-object(N_zero(i,1),1:n)*Molus(j);
end
%初等行變換:對調兩行(對調i,j兩行,記做ri<->rj)
temp(1:m,1)=object(1:m,i);
N_zero=find(temp);
clear temp;
if N_zero(1)==i
object(i,1:n)=object(i,1:n)/object(i,i);
continue;
end
temp(1,1:n)=object(i,1:n);
object(i,1:n)=object(N_zero(1,1),1:n);
object(N_zero(1,1),1:n)=temp(1,1:n);
%初等行變換:以數k~=0乘某一行中的所有元素(第i行乘k,記作ri*k);
object(i,1:n)=object(i,1:n)/object(i,i);
end
L=abs(object)<eps;
object(L)=0;
a=object;
2. 如何用matlab編寫矩陣運算程序
一、矩陣的表示方法
1、矩陣元素必須在」[]」內;
2、矩陣的同行元素之間用空格(或」,」)隔開;
3、矩陣的行與行之間用」;」(或回車符)隔開;
4、矩陣的元素可以是數值、變數、表達式或函數;
5、矩陣的尺寸不必預先定義。
二、矩陣的運算
1、算術運算
MATLAB的基本算術運算有:+(加)、-(減)、*(乘)、/(右除)、(左除)、^(乘方)、』(轉置)。運算是在矩陣意義下進行的,單個數據的算術運算只是一種特例。
(1)矩陣加減運算假定有兩個矩陣A和B,則可以由A+B和A-B實現矩陣的加減運算。運算規則是:若A和B矩陣的維數相同,則可以執行矩陣的加減運算,A和B矩陣的相應元素相加減。如果A與B的維數不相同,則MATLAB將給出錯誤信息,提示用戶兩個矩陣的維數不匹配。
(2)矩陣乘法假定有兩個矩陣A和B,若A為m*n矩陣,B為n*p矩陣,則C=A*B為m*p矩陣。
(3)矩陣除法在MATLAB中,有兩種矩陣除法運算:和/,分別表示左除和右除。如果A矩陣是非奇異方陣,則AB和B/A運算可以實現。
AB等效於A的逆左乘B矩陣,也就是inv(A)*B,而B/A等效於A矩陣的逆右乘B矩陣,也就是B*inv(A)。對於含有標量的運算,兩種除法運算的結果相同。對於矩陣來說,左除和右除表示兩種不同的除數矩陣和被除數矩陣的關系,一般AB≠B/A。
(4)矩陣的乘方一個矩陣的乘方運算可以表示成A^x,要求A為方陣,x為標量。
(5)矩陣的轉置對實數矩陣進行行列互換,對復數矩陣,共軛轉置,特殊的,操作符.』共軛不轉置(見點運算);
(6)點運算在MATLAB中,有一種特殊的運算,因為其運算符是在有關算術運算符前面加點,所以叫點運算。點運算符有.*、./、.和.^。兩矩陣進行點運算是指它們的對應元素進行相關運算,要求兩矩陣的維參數相同。
2、關系運算
MATLAB提供了6種關系運算符:<(小於)、<=(小於或等於)、>(大於)、>=(大於或等於)、==(等於)、~=(不等於)。關系運算符的運演算法則為:
(1)當兩個比較量是標量時,直接比較兩數的大小。若關系成立,關系表達式結果為1,否則為0;
(2)當參與比較的量是兩個維數相同的矩陣時,比較是對兩矩陣相同位置的元素按標量關系運算規則逐個進行,並給出元素比較結果。最終的關系運算的結果是一個維數與原矩陣相同的矩陣,它的元素由0或1組成;
(3)當參與比較的一個是標量,而另一個是矩陣時,則把標量與矩陣的每一個元素按標量關系運算規則逐個比較,並給出元素比較結果。最終的關系運算的結果是一個維數與原矩陣相同的矩陣,它的元素由0或1組成。
3、邏輯運算
MATLAB提供了3種邏輯運算符:&(與)、|(或)和~(非)。邏輯運算的運演算法則為:
(1)在邏輯運算中,確認非零元素為真,用1表示,零元素為假,用0表示;
(2)設參與邏輯運算的是兩個標量a和b,那麼,a&b a,b全為非零時,運算結果為1,否則為0。a|b a,b中只要有一個非零,運算結果為1。~a當a是零時,運算結果為1;當a非零時,運算結果為0。
(3)若參與邏輯運算的是兩個同維矩陣,那麼運算將對矩陣相同位置上的元素按標量規則逐個進行。最終運算結果是一個與原矩陣同維的矩陣,其元素由1或0組成;
(4)若參與邏輯運算的一個是標量,一個是矩陣,那麼運算將在標量與矩陣中的每個元素之間按標量規則逐個進行。最終運算結果是一個與矩陣同維的矩陣,其元素由1或0組成;
(5)邏輯非是單目運算符,也服從矩陣運算規則;
(6)在算術、關系、邏輯運算中,算術運算優先順序最高,邏輯運算優先順序最低。
1.獲取矩陣元素
可以通過下標(行列索引)引用矩陣的元素,如Matrix(m,n)。
也可以採用矩陣元素的序號來引用矩陣元素。
矩陣元素的序號就是相應元素在內存中的排列順序。
在MATLAB中,矩陣元素按列存儲。
序號(Index)與下標(Subscript)是一一對應的,以m*n矩陣A為例,矩陣元素A(i,j)的序號為(j-1)*m+i。
其相互轉換關系也可利用sub2ind和ind2sub函數求得。
2.矩陣拆分
利用冒號表達式獲得子矩陣:
(1)A(:,j)表示取A矩陣的第j列全部元素;A(i,:)表示A矩陣第i行的全部元素;A(i,j)表示取A矩陣第i行、第j列的元素。
(2)A(i:i+m,:)表示取A矩陣第i~i+m行的全部元素;A(:,k:k+m)表示取A矩陣第k~k+m列的全部元素,A(i:i+m,k:k+m)表示取A矩陣第i~i+m行內,並在第k~k+m列中的所有元素。
此外,還可利用一般向量和end運算符來表示矩陣下標,從而獲得子矩陣。end表示某一維的末尾元素下標。
利用空矩陣刪除矩陣的元素:
在MATLAB中,定義[]為空矩陣。給變數X賦空矩陣的語句為X=[]。注意,X=[]與clear X不同,clear是將X從工作空間中刪除,而空矩陣則存在於工作空間中,只是維數為0。
3、特殊矩陣
(1)魔方矩陣魔方矩陣有一個有趣的性質,其每行、每列及兩條對角線上的元素和都相等。對於n階魔方陣,其元素由1,2,3,…,n2共n2個整數組成。MATLAB提供了求魔方矩陣的函數magic(n),其功能是生成一個n階魔方陣。
(2)范得蒙矩陣范得蒙(Vandermonde)矩陣最後一列全為1,倒數第二列為一個指定的向量,其他各列是其後列與倒數第二列的點乘積。可以用一個指定向量生成一個范得蒙矩陣。在MATLAB中,函數vander(V)生成以向量V為基礎向量的范得蒙矩陣。
(3)希爾伯特矩陣在MATLAB中,生成希爾伯特矩陣的函數是hilb(n)。使用一般方法求逆會因為原始數據的微小擾動而產生不可靠的計算結果。MATLAB中,有一個專門求希爾伯特矩陣的逆的函數invhilb(n),其功能是求n階的希爾伯特矩陣的逆矩陣。
(4)托普利茲矩陣托普利茲(Toeplitz)矩陣除第一行第一列外,其他每個元素都與左上角的元素相同。生成托普利茲矩陣的函數是toeplitz(x,y),它生成一個以x為第一列,y為第一行的托普利茲矩陣。這里x,y均為向量,兩者不必等長。toeplitz(x)用向量x生成一個對稱的托普利茲矩陣。
(5)伴隨矩陣MATLAB生成伴隨矩陣的函數是compan(p),其中p是一個多項式的系數向量,高次冪系數排在前,低次冪排在後。
(6)帕斯卡矩陣我們知道,二次項(x+y)n展開後的系數隨n的增大組成一個三角形表,稱為楊輝三角形。由楊輝三角形表組成的矩陣稱為帕斯卡(Pascal)矩陣。函數pascal(n)生成一個n階帕斯卡矩陣。
網路——MATLAB
3. matlab化矩陣標准型
在MATLAB中,計算矩陣A的特徵值和特徵向量的函數是eig(A),常用的調用格式有3種:
(1) E=eig(A):求矩陣A的全部特徵值,構成向量E。
(2) [V,D]=eig(A):求矩陣A的全部特徵值,構成對角陣D,並求A的特徵向量構成V的列向量。
(3) [V,D]=eig(A,『nobalance』):與第2種格式類似,但第2種格式中先對A作相似變換後求矩陣A的特徵值和特徵向量,而格式3直接求矩陣A的特徵值和特徵向量。
其他的很好解決吧
4. MATLAB怎麼求解兩個矩陣之間的變換矩陣
1:A=rand(4,3);A=[A(1,:),A(2,:);A(3,:),A(4,:)];2:用reshape函數b=reshape(a,[m n]);b=reshape(a,[2 6]);注意轉換後和轉換前的元素個數要相等也就是2x6要等於3x41 矩陣的建立1.直接輸入法最簡單的建立矩陣的方法是從鍵盤直接輸入矩陣的元素。具體方法如下:將矩陣的元素用方括弧括起來,按 矩陣行的順序輸入各元素,同一行的各元素之間用空格或逗號分隔,不同行的元素之間用分號分隔。2.利用M文件建立矩陣對於比較大且比較復雜的矩陣, 可以為它專門建立一個M文件。下面通過一個簡單例子來說明如何利用M文件創建矩陣。例2-2 利用M文件建立MYMAT矩陣。(1) 啟動有關編輯程序或MATLAB文本編輯器,並輸入待建矩陣:(2) 把輸入的內容以純文本方式存檔(設文件名為mymatrix.m)。(3) 在MATLAB命令窗口中輸入mymatrix,即運行該M文件,就會自動建立一個名為MYMAT的矩陣,可供以後使用。3.利用冒號表達式建立一個向量冒號表達式可以產生一個行向量,一般格式是:e1:e2:e3其中e1為初始值,e2為步長,e3為終止值。在MATLAB中,還可以用linspace函數產生行向量。其調用格式為:linspace(a,b,n)其中a和b是生成向量的第一個和最後一個元素,n是元素總數。顯然,linspace(a,b,n)與a:(b-a)/(n-1):b等價。4.建立大矩陣大矩陣可由方括弧中的小矩陣或向量建立起來。5. 如何使用Matlab進行矩陣變換
如何根據題主的要求,使用Matlab進行矩陣變換?我們可以按下列步驟來考慮:
第一步:A和B矩陣組合成C矩陣。即
C=[A;B];
第二步:使用size()和max()函數,使用zeros()函數創建滿足題主要求大小的D零矩陣,即
[m,n]=size(C);
D=zeros(m,max(max(C)));
第三步:使用for循環語句,將滿足A和B矩陣中的數值,放入D矩陣中。即
for i=1:length(A)
D1=A(i);
D(1,D1)=A(i);
end
for j=1:length(B)
D2=B(j);
D(2,D2)=B(j);
end
第四步:顯示變換後的D矩陣
D