Re: [討論] 請問想要把不同維度的矩陣結合在一起的 …已回收
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):