/ / कैसे इस उदाहरण के लिए matlab matrices reshape करने के लिए? - मैटलैब, मैट्रिक्स, रिशेप

इस उदाहरण के लिए matlab matrices को दोबारा कैसे बदलें? - matlab, मैट्रिक्स, reshape

मेरे पास 40x16 मैट्रिक्स है या 8 5x16 नीचे हैअन्य अर्थात् लंबवत संरेखित करें। मैं इसमें से 5x128 मैट्रिक्स प्राप्त करना चाहता हूं, जैसे कि मैंने 8 5x16 मैट्रिसेस को क्षैतिज रूप से संरेखित किया है। क्या ऐसा करने के लिए एक कुशल / तेज (छोरों के लिए हार्डकोड के बजाय) है?

मैं व्यक्तिगत 5x16 मैट्रिसेस को बरकरार रखना चाहता हूं।

उत्तर:

उत्तर № 1 के लिए 1

यह काम करना चाहिए। मान लीजिए कि आपका मैट्रिक्स है A (40x16)।

यहाँ एक तरह से प्रयोग है reshape:

m = 5; n = 8; p = 16;
B = reshape(permute(reshape(A", p, m, n), [2 1 3]), m, n*p);

बी में आपके आठ 5x16 मैट्रिस एक दूसरे के बगल में होंगे, बरकरार।

और यहाँ एक तरीका है बिना reshape:

m = 5; n = 8;
B = cell2mat(arrayfun(@(i) A(m*(i-1)+1:m*i, :), 1:n, "UniformOutput", false));

जवाब के लिए 0 № 2

का उपयोग करने पर विचार reshape समारोह: डॉक @ mathworks.


जवाब के लिए 0 № 3

आप बड़े मैट्रिक्स को छोटे लोगों में विभाजित करने के लिए MAT2CELL का उपयोग कर सकते हैं, फिर अपने इच्छित आयाम को जोड़ सकते हैं:

A = rand(8*5,16);
blkSz = 5;

C = mat2cell(A, blkSz*ones(1,size(A,1)/blkSz), size(A,2));
C = cat(2,C{:})

जवाब के लिए 0 № 4

3-by-4 मैट्रिक्स को 2-by-6 मैट्रिक्स में रीसेट करें। ए = १ ४ 7 १० २ ५ 8 ११ ३ ६ ९ १२

बी = रिशेप (ए, 2,6)

ब = १ ३ ५ 7 ९ ११ २ ४ ६ 8 १० १२ बी = रिशेप (ए, 2, [])

ब = १ ३ ५ 7 ९ ११ २ ४ ६ 8 १० १२