2016-05-17 54 views
0

我有A8-矩陣。我想取最後6行並將它們放在第一行和第二行的旁邊,以便矩陣A變爲2 -by- 32如何在matlab中製作一個8乘8的矩陣爲2乘32的矩陣

編輯:

A = 

12,6872713121256 12,0602414786595 10,3270660536998 7,80915144314411 10,0045468077317 9,60906828665612 8,31320998311920 6,36510295973004 
12,0602414786595 12,6872713121256 12,0602414786595 10,3270660536998 9,38969514490848 10,0045468077317 9,60906828665612 8,31320998311921 
10,3270660536998 12,0602414786595 12,6872713121256 12,0602414786595 7,92932345092466 9,38969514490848 10,0045468077317 9,60906828665611 
7,80915144314411 10,3270660536998 12,0602414786595 12,6872713121256 5,89043977575553 7,92932345092466 9,38969514490847 10,0045468077317 
10,0045468077317 9,38969514490848 7,92932345092466 5,89043977575553 7,90694573827892 7,48897349750382 6,39213878381770 4,80849938907536 
9,60906828665612 10,0045468077317 9,38969514490848 7,92932345092466 7,48897349750382 7,90694573827892 7,48897349750382 6,39213878381770 
8,31320998311920 9,60906828665612 10,0045468077317 9,38969514490847 6,39213878381770 7,48897349750382 7,90694573827892 7,48897349750382 
6,36510295973004 8,31320998311921 9,60906828665611 10,0045468077317 4,80849938907536 6,39213878381770 7,48897349750382 7,90694573827892 

丹斯解決方案卻給不了我想要的東西,當我把這個代碼:Ry=reshape(A.',[],2).';

我要保持我的第一行和第二行中出現的地方,我只是想移動其他行(從3到8的行)並將它們放在行1和行2的旁邊,以便行3位於行1的旁邊。行4位於行2的旁邊。行5位於行1的旁邊3 ...第6行在第2和4行旁邊,依此類推......謝謝

+3

搜索「如何重塑在MATLAB矩陣」 – patrik

+0

關於從@丹的回答下面的評論。你能提供兩個矩陣的例子嗎? – Crowley

+0

是的,我會發布他們 – Joe

回答

1

使用轉置之後的(必要因爲MATLAB使用column-major索引)到3D矩陣。然後置換矩陣與第二交換新的第三個維度,然後重塑和轉回來

reshape(permute(reshape(A.',8,2,[]),[1,3,2]),[],2).' 
+0

謝謝你這個作品Ry = reshape(R。',2,[]);無轉置 – Joe

+0

@Joe你確定嗎?因爲如果我考慮它,它實際上必須是'重塑'(A。',[],2)。' '。檢查實際的數字,以確保他們正在去他們需要的地方。 – Dan

+0

我只是做了它在matlab中,它的工作原理是你siad但沒有轉置..當我做轉置我得到32 * 2矩陣..只需在matlab中寫'A = rand(8); B =重塑(A '2,[])。' ; '現在看到B的DIM thanks ..謝謝 – Joe