pesce 發問時間: 電腦與網際網路程式設計 · 1 0 年前

求救!sparse matrix algorithm

我想寫出一個大型的稀疏矩陣

但用MATLAB怎麼寫都寫不出來

因為我是MATLAB的初學者

我想拜託各位大大幫我想想

如何表示一個大型稀疏矩陣A

對角線元素A(i,i)都是1

A(i,i+1)=2

A(i,i-1)=-1

A(i,i+2)=3

A(i,i+5)=-2這種類型的矩陣

我有用for迴圈做但都跑不出來

請各位幫我想想用matlab怎寫

拜託啦@@

1 個解答

評分
  • Chaos
    Lv 7
    1 0 年前
    最佳解答

    利用sparse的方法結合full指令

    由你的要求 假設你的矩陣為10*10

    n=10; %矩陣大小10*10

    D = sparse(1:n,1:n,ones(1,n),n,n); %A(i,i)都是1

    E = sparse(2:n,1:n-1,2*ones(1,n-1),n,n); %A(i,i 1)都是2

    F = sparse(1:n-1,2:n,-1*ones(1,n-1),n,n); %A(i,i-1)都是-1

    G = sparse(3:n,1:n-2,3*ones(1,n-2),n,n); %A(i,i 2)都是3

    H = sparse(6:n,1:n-5,-2*ones(1,n-5),n,n); %A(i,i 5)都是-2

    S = E D F G H;

    A=full(S)

    A =

    1 -1 0 0 0 0 0 0 0 0

    2 1 -1 0 0 0 0 0 0 0

    3 2 1 -1 0 0 0 0 0 0

    0 3 2 1 -1 0 0 0 0 0

    0 0 3 2 1 -1 0 0 0 0

    -2 0 0 3 2 1 -1 0 0 0

    0 -2 0 0 3 2 1 -1 0 0

    0 0 -2 0 0 3 2 1 -1 0

    0 0 0 -2 0 0 3 2 1 -1

    0 0 0 0 -2 0 0 3 2 1

    你大概可以歸納出來寫法

    2008-03-12 17:47:08 補充:

    S = E D F G H;

    應為 S=E+D+F+G+H;

    參考資料: 教學經驗
還有問題?馬上發問,尋求解答。