Re: [問題] 關於矩陣的元素已回收

看板MATLAB作者 (FuncSurface)時間13年前 (2010/09/18 00:50), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《sqrt1089 (李崩子)》之銘言: : 假設我處理出一個矩陣 : A= : 1 0 0 0 0 0 : 0 0 0 0 0 0 : 0 0 0 0 0 0 : 0 2 3 0 0 0 : 0 0 0 4 5 6 : 有沒有方法可以讓他變成以下這樣 : B= : 1 : 0 : 0 : 2 3 : 4 5 6 : 就是每列都往前遞補到第一行,然後都是0的列就補一個0(為了觀察用的) : 有爬過文 : 有一個頗類似b=a(a~=0)這個 : 但是碰到矩陣就亂掉了,而且他把0全刪掉 寫法不太簡潔,A矩陣內元素怕搞混,我乘上10倍 clear all clc A=[10 0 0 0 0 0;0 0 0 0 0 0;0 0 0 0 0 0;0 20 30 0 0 0;0 0 0 40 50 60]; TEMP=size(A); colA=TEMP(1); B=zeros(size(A)); for col=1:colA TEMP=A(col,:); TEMP=TEMP(find(TEMP>0)); if sum(TEMP)==0 B(col,:)=zeros(1,6); else for row=1:max(size(TEMP)) B(col,row)=TEMP(row); end end end -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.124.128.172

09/18 22:23, , 1F
這個解法..我想你假設了所有元素都是正數
09/18 22:23, 1F

09/18 22:24, , 2F
如果是有正有負的話 用sum是個危險的行為
09/18 22:24, 2F

09/18 22:33, , 3F
的確 元素若有負的情況 要再另外修改
09/18 22:33, 3F
文章代碼(AID): #1CavnJGz (MATLAB)
文章代碼(AID): #1CavnJGz (MATLAB)