Re: [問題] 如何將矩陣加入個數已回收

看板MATLAB作者 (Yes)時間15年前 (2010/11/19 15:58), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串3/3 (看更多)
: A = [ 6, 2, 3, 4, 5 ]; : B = [ 1, 1, 2, 3, 1 ]; : 其中 A 是主要的矩陣 : 然後 B 是要重複的個數 : 要怎麼樣才能快速求得 : C = [ 6, 2, 3, 3, 4, 4, 4, 5 ]; : 雖然有想過要手動... : 不過有點長自己打錯也不知道... : 且還有兩列一整個很麻煩... : 不知道哪位大大有較方便的寫法!? 我現在沒有matlab可以用 但有個想法 希望板上有人可以幫我證實 for i=1:length(B) C0=rep(A(1,i) , [1,B(1,i)]); %然後讓C0一直加到C矩陣的後面 end 這想法不知道可不可以? 中文化: i=1 ==> A(1,i)=6 重複 B(1,i)=1 次 ==> C0=[6] ==> C=[6] i=2 ==> A(1,i)=2 重複 B(1,i)=1 次 ==> C0=[2] ==> C=[6 2] i=3 ==> A(1,i)=3 重複 B(1,i)=2 次 ==> C0=[3 3] ==> C=[6 2 3 3] 這樣~~ 或是採用線性代數的內積讓A的第i個數字重複n次這樣 C0=A(1,i)*ones(1,B(1,i)); --------------------------------以下更新------------------------------------- 感謝版友的協助 C=zeros(sum(B),1); base=1; for i=1:numel(B) C(base:(base+B(i)-1))=A(i); base=base+B(i); end -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.29.35.158

11/19 16:08, , 1F
但是萬一各數有0個好像就不能用耶= =,除非前面再加判斷
11/19 16:08, 1F

11/19 16:08, , 2F
式,但就會比前面提出的程式碼還來得長
11/19 16:08, 2F
※ 編輯: schumi3019 來自: 163.29.35.158 (11/19 16:38) ※ 編輯: schumi3019 來自: 59.121.135.145 (11/19 23:53)
文章代碼(AID): #1CvYusUG (MATLAB)
文章代碼(AID): #1CvYusUG (MATLAB)