作者ReiFu21 (ReiFu)
看板MATLAB
标题[讨论] 让两个矩阵的列数交错
时间Sun Dec 2 10:30:21 2012
我有两个矩阵 A的大小是2000000x6 B的大小是1999999x6
我想让这两个矩阵的列数交错 产生一个新的矩阵是3999999x6
开头一样是A的第一列 结尾一样是A的最後一列 但是把B给塞进去了
像这样
A1
B1
A2
B2
.
.
.
.
Bend
Aend
我写了回圈慢慢做 A1B1
A1B1A2B2
A1B1A2B2A3B3
.
.
.
.
一开始程式跑很快 估计几十分钟就可以跑完
但是越跑越慢 我用计时程式发现间隔时间呈等加级数增加
最後估计需要好几天的时间才可以跑完
请问是哪里出了问题? 还想请问有比较快速的写法吗??
谢谢
附上原始程式
ee=length(A);
tic
C=[];
TimeSpend=[0];
for j = 2:ee-1
C=[C;A(j-1,:);B(j-1,:)];
TimeInterval=toc-TimeSpend
TimeSpend=toc
end
C=[C;A(end-1,:);B(end,:);A(end,:)];
save 'C.txt' C -ascii
还有最後出来的新矩阵C其实就是A所有两两列数中间插入'上下两列的中间值'
ex:A= 1 3 5 B= 2 2 5 C= 1 3 5
3 1 5 2 1 3 2 2 5
1 1 1 3 1 5
2 1 3
1 1 1
我在算B矩阵时也是时间间隔会越来愈长 估计完成也要花1天的时间
想请问有没有比较快的方法
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.125.30.111
1F:推 Oxygenair:C = zeros(size(A,1)+size(B,1),size(A,2)); 12/02 11:00
2F:→ Oxygenair:C( 1:2:size(C,2) , : ) = A; 12/02 11:00
3F:→ Oxygenair:C( 2:2:size(C,1)-1 , : ) = B; 12/02 11:01
4F:→ Oxygenair:第二行请更正 C( 1:2:size(C,1) , : ) = A; 12/02 11:02
5F:→ ReiFu21:谢谢 我试试看 12/02 11:03