Dobrý deň, ja pracujem s MATLABom a mám "z" stĺpcový vektor ktorý má rozmer (9680 x 1). Chcem to zmeniť, aby som mal pole "z" rozmeru (44 x 220). Robím nasledovné:
z=reshape(z,44,220);
Taktiež som sa snažil:
z=reshape(z,[44,220]);
Ale výstup nie je správny (aspoň prvý riadok). Vidím to porovnaním výstupnej matice s počiatočným vektorom.
Potrebujem len 220 prvých pozícií stĺpcavektor je dĺžka prvého radu matice, potom ďalších 220 pozícií vektora je druhý riadok matice a tak ďalej až do získania 44 riadkov.
Čo robím zle? Vďaka za vašu pomoc.
odpovede:
6 pre odpoveď č. 1Matlab ukladá maticové hodnoty do hlavného formátu stĺpca (toto je dôležité počas pretvárania). Vzhľadom k tomu, že chcete riadok, musíte urobiť
z = reshape(z, [220 44]).";
potom transponovať.
2 pre odpoveď č. 2
Ja som použil Andreas H.prístup.
Ako alternatíva existuje „a vec2mat
v komunikačnom paneli nástrojov, ktorý to robí, a ak je to potrebné, vyplní aj chýbajúce hodnoty:
>> x = 11:18;
>> vec2mat(x,4) %// no padding needed
ans =
11 12 13 14
15 16 17 18
>> vec2mat(x,5) %// padding needed; with 0 by default
ans =
11 12 13 14 15
16 17 18 0 0
>> vec2mat(x,5,-1) %// padding needed; with specified value
ans =
11 12 13 14 15
16 17 18 -1 -1