matlab將矩陣化為行最簡形

2021-10-25 12:09:36 字數 2877 閱讀 7885

用基礎的函式寫了乙個matlab指令碼將矩陣變成行最簡式。未參考matlab自帶的rref函式,基本與其無關,如有bug可反饋。

大致思路:把矩陣含有0的行放在最下面,然後下面的行減去上面的行,最後變成行最簡型。

function r =

my_rs

(a)%a表示輸入矩陣

%r表示輸出的行最簡型矩陣

t =1;

%進行行迴圈的元素

t =zeros

(size

(a,1),

size

(a,2))

;%設定乙個t矩陣,用來排序的

i =1;

%進行列迴圈的元素

while i <

size

(a,2

) c =

size

(a,1

); flcg =

0; sf =

0; ***g =0;

%將a進行降序排序,並且把含有0的列放在最後

a =sortrows

(a,'descend');

for j = t:

size

(a,1

) v = j;

op =0;

for k = t:

size

(a,1)if

a(k, i)==0

op = op +1;

endend

ifa(j, i)==0

for l = v + op:

size

(a,1)t

(v,:)=

a(v,:)

;a(v,:)=

a(l,:)

; v = v +1;

endfor w =

size

(a,1

)- op +1:

size

(a,1)a

(w,:)=

t(w,:)

; end

break

endend

%進行行迴圈

for j = t:

size

(a,1)if

a(j, i)==0

c = j -1;

break

endend

%將t行i列下的元素變為0

if c - t >=

1for m = c:-1

:t +

1%判斷兩個值是否近似,以方便進行加減計算

for cc = i:

size

(a,2)if

abs(

a(m, cc)-a

(t, cc)

)<

10e-10

a(m, cc)=a

(t, cc)

; end

enda

(m,:)=

a(m,:)

-(a(m, i)/a

(t, i)).

*a(t,:);

endend

%判斷t行前i列是否都為0

if i >

1for gg = i -1:

-1:1

ifa(t, gg)~=

0 ***g =1;

break

endend

endif ***g ==

0%第乙個元素變為1ifa

(t, i)~=

0a(t,:)=

a(t,:)

/a(t, i)

; end

%將t行i列上的元素變為0

if t >=

2for v =

1:t -

1%判斷是否近似

for dd = i:

size

(a,2)if

abs(

a(v, dd)-a

(t, dd)

)<

10e-10

a(v, dd)=a

(t, dd)

; end

enda

(v,:)=

a(v,:)

-(a(v, i)/a

(t, i)).

*a(t,:);

endend

end%判斷下一列(下幾列)t行下的元素是否全為0

if i <

size

(a,2

)&& t <

size

(a,1

)for f = i +1:

size

(a,2

)for s = t +1:

size

(a,1)if

a(s, f)~=

0 flcg =1;

break

endend

if flcg ==

1break

else

sf = sf +1;

endend

end%跳過下一列(下幾列)

if flcg ==

0 i = i + sf;

endif t <

size

(a,1

) t = t +1;

else

break

endi = i +1;

end%賦值結果

r = a;

end

C 將矩陣轉換為行最簡型矩陣

是否還在困擾,將矩陣化為行最簡型矩陣的時候總是出錯?是否還在生氣,妥善保管的答案不見蹤跡?沒事,這個 將幫你把這些問題一網打盡。通過自己設定矩陣的行數與列數,輸入乙個矩陣,使其輸出行最簡型矩陣,親測無誤奧。話不多說,來看看吧!第一步 輸入矩陣 輸入矩陣首先得確定矩陣的行數與列數,這裡利用兩個巨集定義...

2036 將稀疏矩陣轉化為簡式

time limit 20 second memory limit 20 mb 問題描述 大部分元素為0的矩陣稱為稀疏矩陣,假設有k個非0元素,則可以把稀疏矩陣用k 3的矩陣簡記之,其中第一列是行號,第二列是列號,第三列是該行 該列下的非0元素的值。試編制一程式,讀入一稀疏矩陣,並轉換成簡記形式輸出...

matlab將矩陣寫入檔案

clear all clc file dir c users administrator desktop 2016 11 18 zty44統計模式 qp 24 txt 讀取所有的檔案 copy txt all.txt a load a.txt 檔案a為資料檔案1 b load b.txt 檔案c為資...