, böyle bir dizinin boyutlar arasında daraltabilirsiniz:Belirli bir boyut kümesinde diziyi nasıl daraltılır? Matlab içinde
M = rand(3,4,5);
myvec = M(:); % gives a 60-element vector
Ben serialising veya düzleştirme denilen düşünüyorum. Öğelerin sırası önce dim1, sonra dim2, sonra dim3 olur - böylece [M(1,1,1); M(2,1,1); M(3,1,1); M(1,2,1); ...]
elde edersiniz.
Ama ne yapmak istediğim sadece ilk iki boyutta çöküşü:
mymatrix = M(:: , :); % something that works like this?
12 x 5 matris vermek. Yani, örneğin,
[M(1,1,1) M(1,1,2) M(1,1,3) M(1,1,4) M(1,1,5)
M(2,1,1) M(2,1,2) M(2,1,3) M(2,1,4) M(2,1,5)
M(3,1,1) M(3,1,2) M(3,1,3) M(3,1,4) M(3,1,5)
M(1,2,1) M(1,2,2) M(1,2,3) M(1,2,4) M(1,2,5)
...
]
olsun mymatrix
ilk boyutu "düzleştirilmiş" 1 ve özgün M
2. boyutları, ancak herhangi bir diğer boyutları koruyarak böylece.
Aslında bunu 5 boyutlu bir dizinin "orta 3 boyutları" için yapmam gerekiyor, bu yüzden genel bir çözüm harika olurdu! Örneğin. W=rand(N,N,N,N,N); mymatrix = W(:, :::, :)
, ne demek istediğimi görürseniz, N x N^3 x N
matrisini vermelidir.
sayesinde
boyutu uzunluk bağımsız değişkenler biri için bir tutucu olarak köşeli parantezler ([]
) ile
Mükemmel teşekkürler! Yeniden şekillendirmeyi düşünmeliydin. PS Sadece işe yarayacak başka bir yol düşündüm: tmp = permute (M, [1,5,2,3,4]); ', mymatrix = tmp (:, :)'. Her zaman işe yarayacağından emin değil misiniz? Tabii ki yeniden şekillendirmek ** çok fazla tercih edilir. –