Re: [問題] 矩陣相關問題
※ 引述《yayaya0415 (雅雅)》之銘言:
: 各位大大好,小女~~我是MATLAB的新手~~最近在寫論文的程式,遇到問題了
: 希望各位大大可以幫幫小女的忙~~
: 以下是我遇到的問題
: Cj是一個4X5,5X6,6X7.........的矩陣
: j=0:2
: Cj的矩陣會隨著j逐漸變大
: 我希望結果可以列出Cj矩陣
: C0= 4 0 0 0
: 0 4 0 0
: 0 0 4 0
: 0 0 0 4
: 0 0 0 0
: C1= 4 0 0 0 0
: 0 4 0 0 0
: 0 0 4 0 0
: 0 0 0 4 0
: 0 0 0 0 4
: 0 0 0 0 0
: C2= 4 0 0 0 0 0
: 0 4 0 0 0 0
: 0 0 4 0 0 0
: 0 0 0 4 0 0
: 0 0 0 0 4 0
: 0 0 0 0 0 4
: 0 0 0 0 0 0
: 以上是我的問題
: 目前我是用笨方法~
: 已知mu2=4
: for i=1:8;
: CBIG(i,i)=mu2;
: end
: C0= CBIG(3:8,3:7)
: C1= CBIG(2:8,2:7)
: 我設一個大的C矩陣 叫CBIG 從中擷取一小部份我要的C0.C1小矩陣
: 未來矩陣要更大 這種笨方法~~~~~~不行了~~
: 所以請各位大大幫幫小女!!!小女感激不盡!!!!!!!!!!!!!!!!
抓到規則就可以暴力把C0到Cn都產生出來
以下產生到C5
for i=0:5
eval(['C',num2str(i),'=diag(ones(',num2str(i),'+5,1)*mu);']);
eval(['C',num2str(i),'(:,end)=[];']);
end
而妳原本產生大矩陣再擷取也不算笨方法
這樣效率反而更好
CBIG=diag(ones(5+5,1)*mu);
for i=0:5
eval(['C',num2str(i),'=CBIG(1:i+5,1:i+4);'])
end
另外以妳的矩陣型態
或許可以考慮宣告稀疏矩陣
或者是乾脆不宣告矩陣直接抓指標計算
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.146.175
推
12/27 16:48, , 1F
12/27 16:48, 1F
討論串 (同標題文章)
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章