Re: [討論] 請問想要把不同維度的矩陣結合在一起的 …已回收

看板MATLAB作者 (Study&Research)時間15年前 (2010/12/06 20:39), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《bird117 (鳥)》之銘言: : ※ 引述《sexygg (gg)》之銘言: : : 我有若干個矩陣,列數都是1,但行數不同 : : 我舉三個好了,a=[1 2] b=[1 2 3] c=[1 2 3 4] : : 我想要把這三個矩陣結合成一個三列的矩陣,而行數最大值就是三個之中最大的 : : 也就是結合成一個3*4的矩陣,不足的地方就補零,如下 : : [1 2 0 0] : : z=[1 2 3 0] : : [1 2 3 4] : : 想請教matlab裡面有相關指令可以做這個矩陣結合,不足補零的函數呢? : : 謝謝!! : 我是新手,請高手指點 <(_ _)> : 指令vertcat好像可以把相同的矩陣結合 : 我的寫法如下: : clc : clear : a=[1 2]; : b=[1 2 3]; : c=[1 2 3 4]; : % 尋找各矩陣大小 : Sa=size(a); : Sb=size(b); : Sc=size(c); : M=max([Sa(2) Sb(2) Sc(2)]); % 找出最大的 : % 其他短的矩陣末端補0 : if Sa(2)<M : a(1,Sa(2)+1:M)=0; : if Sb(2)<M : b(1,Sb(2)+1:M)=0; : if Sc(2)<M : c(1,Sc(2)+1:M)=0; : end : end : end : % 合併a,b,c D就是你要的 : D=vertcat(a,b,c); : 若是你要合併的矩陣有很多個(ex:1000個) 那我的寫法應該不是很好 : 應該有更好的寫法吧~ 我的功力很弱,請高手指教 謝謝^^" 參考 bird117 的寫法 把 if Sa(2)<M a(1,Sa(2)+1:M)=0; if Sb(2)<M b(1,Sb(2)+1:M)=0; if Sc(2)<M c(1,Sc(2)+1:M)=0; end end end 改成 a2 = a*eye(Sa(2),M); b2 = b*eye(Sb(2),M); c2 = c*eye(Sc(2),M); D = vertcat(a2,b2,c2); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.38.199.83

12/11 13:41, , 1F
這個寫法更好~ 而且不用用到判別~ 受教了~ <(_._)>
12/11 13:41, 1F
文章代碼(AID): #1C_Dc2U- (MATLAB)
文章代碼(AID): #1C_Dc2U- (MATLAB)