Forumregels
(Middelbare) school-achtige vragen naar het forum "Huiswerk en Practica" a.u.b.
Zie eerst de Huiswerkbijsluiter
roelbrooimans
Artikelen: 0
Berichten: 20
Lid geworden op: do 08 jan 2009, 17:14

Rijvectoren verwisselen

Goeiemiddag,

Ik zit met een bepaald probleem.

We hebben 6 kolomvectoren gedeclareerd, namelijk de volgende 6.

M1=[1;0;0;0;0;0];

M2=[0;1;0;0;0;0];

M3=[0;0;1;0;0;0];

M4=[0;0;0;1;0;0];

M5=[0;0;0;0;1;0];

M6=[0;0;0;0;0;1];

Nu hebben we van deze kolomvectoren de volgende 6x10 matrices gemaakt, S1 t/m S20.

S1=[M6,M2,M4,M3,M6,M5,M3,M1,M5,M3];

S2=[M4,M5,M6,M5,M2,M3,M6,M6,M3,M6];

S3=[M1,M3,M5,M1,M1,M2,M2,M4,M2,M2];

S4=[M1,M5,M3,M6,M3,M3,M6,M4,M2,M5];

S5=[M6,M1,M5,M3,M5,M4,M5,M3,M2,M2];

S6=[M2,M5,M2,M4,M1,M5,M3,M6,M6,M4];

S7=[M3,M6,M5,M4,M5,M4,M3,M2,M3,M4];

S8=[M5,M2,M6,M4,M3,M5,M4,M3,M5,M4];

S9=[M5,M6,M4,M6,M2,M6,M2,M2,M6,M5];

S10=[M1,M1,M6,M2,M2,M4,M2,M3,M1,M6];

S11=[M4,M3,M4,M3,M3,M2,M4,M5,M4,M4];

S12=[M2,M3,M5,M5,M3,M4,M5,M1,M4,M1];

S13=[M3,M2,M6,M1,M5,M6,M6,M5,M3,M3];

S14=[M2,M4,M2,M6,M5,M3,M5,M2,M3,M6];

S15=[M5,M2,M6,M4,M1,M2,M4,M4,M3,M4];

S16=[M3,M1,M1,M2,M1,M3,M5,M1,M1,M4];

S17=[M4,M1,M1,M2,M4,M1,M3,M4,M5,M5];

S18=[M1,M3,M3,M3,M1,M5,M5,M5,M3,M4];

S19=[M1,M3,M5,M6,M2,M2,M6,M2,M5,M6];

S20=[M2,M2,M1,M1,M4,M2,M6,M2,M2,M6];

Deze 20 matrices hebben we weer in een grotere matrix geplaatst, genaamd S, op de volgende manier.

S=[S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,S15,S16,S17,S18,S19,S20];

Dit geeft ons dus een 6x200 matrix met een hele hoop elementen 0 en enkele elementen 1.

Nu zit ik met het volgende probleem. We willen gebruik maken van simulated annealing, waardoor de matrix S telkens opnieuw willekeurig gemaakt moet worden uit de matrices S1 t/m S20. Het maakt me dus niet uit of de matrix er zo uit ziet

S=[S8,S5,S12,S1,S2.....................]

of zo

S=[S3,S18,S7,S11,S20..................]

zolang alle matrices S1 t/m S20 maar gebruikt worden in een willekeurige volgorde.

Ik gebruik MATLAB als wiskunde programma maar ik loop behoorlijk vast op het willekeurig creeren van de matrix S uit de matrices S1 t/m S20, kan iemand me helpen?

MVG Roel Brooimans
EvilBro
Artikelen: 0
Berichten: 7.081
Lid geworden op: vr 30 dec 2005, 09:45

Re: Rijvectoren verwisselen

De truc is volgens mij een cell-array:

Code: Selecteer alles

% M vectoren maken.

M = eye(6);

M1 = M(:,1);

M2 = M(:,2);

M3 = M(:,3);

M4 = M(:,4);

M5 = M(:,5);

M6 = M(:,6);



% S# aanmaken in een cell-array.

S{1}=[M6,M2,M4,M3,M6,M5,M3,M1,M5,M3];

S{2}=[M4,M5,M6,M5,M2,M3,M6,M6,M3,M6];

S{3}=[M1,M3,M5,M1,M1,M2,M2,M4,M2,M2];

S{4}=[M1,M5,M3,M6,M3,M3,M6,M4,M2,M5];

S{5}=[M6,M1,M5,M3,M5,M4,M5,M3,M2,M2];

S{6}=[M2,M5,M2,M4,M1,M5,M3,M6,M6,M4];

S{7}=[M3,M6,M5,M4,M5,M4,M3,M2,M3,M4];

S{8}=[M5,M2,M6,M4,M3,M5,M4,M3,M5,M4];

S{9}=[M5,M6,M4,M6,M2,M6,M2,M2,M6,M5];

S{10}=[M1,M1,M6,M2,M2,M4,M2,M3,M1,M6];

S{11}=[M4,M3,M4,M3,M3,M2,M4,M5,M4,M4];

S{12}=[M2,M3,M5,M5,M3,M4,M5,M1,M4,M1];

S{13}=[M3,M2,M6,M1,M5,M6,M6,M5,M3,M3];

S{14}=[M2,M4,M2,M6,M5,M3,M5,M2,M3,M6];

S{15}=[M5,M2,M6,M4,M1,M2,M4,M4,M3,M4];

S{16}=[M3,M1,M1,M2,M1,M3,M5,M1,M1,M4];

S{17}=[M4,M1,M1,M2,M4,M1,M3,M4,M5,M5];

S{18}=[M1,M3,M3,M3,M1,M5,M5,M5,M3,M4];

S{19}=[M1,M3,M5,M6,M2,M2,M6,M2,M5,M6];

S{20}=[M2,M2,M1,M1,M4,M2,M6,M2,M2,M6];



% tot zover de voorbereidingen, hier begint je loop:



% http://www.mathworks.nl/help/techdoc/ref/randperm.html

neworder = randperm(20);



% shuffle

for i = 1:1:20,

	G{i} = S{neworder(i)};

end

	

% P is the shuffled 6x200 matrix

P = [G{:}];
EvilBro
Artikelen: 0
Berichten: 7.081
Lid geworden op: vr 30 dec 2005, 09:45

Re: Rijvectoren verwisselen

Het vorige maar dan in 1 regel. :)

Code: Selecteer alles

% aanmaken cells

M = eye(6);

S{1}  = M(:,[6,2,4,3,6,5,3,1,5,3]);

S{2}  = M(:,[4,5,6,5,2,3,6,6,3,6]);

S{3}  = M(:,[1,3,5,1,1,2,2,4,2,2]);

S{4}  = M(:,[1,5,3,6,3,3,6,4,2,5]);

S{5}  = M(:,[6,1,5,3,5,4,5,3,2,2]);

S{6}  = M(:,[2,5,2,4,1,5,3,6,6,4]);

S{7}  = M(:,[3,6,5,4,5,4,3,2,3,4]);

S{8}  = M(:,[5,2,6,4,3,5,4,3,5,4]);

S{9}  = M(:,[5,6,4,6,2,6,2,2,6,5]);

S{10} = M(:,[1,1,6,2,2,4,2,3,1,6]);

S{11} = M(:,[4,3,4,3,3,2,4,5,4,4]);

S{12} = M(:,[2,3,5,5,3,4,5,1,4,1]);

S{13} = M(:,[3,2,6,1,5,6,6,5,3,3]);

S{14} = M(:,[2,4,2,6,5,3,5,2,3,6]);

S{15} = M(:,[5,2,6,4,1,2,4,4,3,4]);

S{16} = M(:,[3,1,1,2,1,3,5,1,1,4]);

S{17} = M(:,[4,1,1,2,4,1,3,4,5,5]);

S{18} = M(:,[1,3,3,3,1,5,5,5,3,4]);

S{19} = M(:,[1,3,5,6,2,2,6,2,5,6]);

S{20} = M(:,[2,2,1,1,4,2,6,2,2,6]);



% shuffle en concat in een regel:

P = [S(1,randperm(20)){:}];
roelbrooimans
Artikelen: 0
Berichten: 20
Lid geworden op: do 08 jan 2009, 17:14

Re: Rijvectoren verwisselen

het lukt me nog niet helemaal maar ik moet er uit komen!!

ik denk dat ik die randperm functie wel zoek, maar ik vraag me af of het niet al mijn matrices S1 t/m S20 door elkaar zijn geschopt, want die moeten namelijk wel behouden blijven en mogen alleen onderling worden verwisseld. Toch bedankt!
EvilBro
Artikelen: 0
Berichten: 7.081
Lid geworden op: vr 30 dec 2005, 09:45

Re: Rijvectoren verwisselen

ik denk dat ik die randperm functie wel zoek, maar ik vraag me af of het niet al mijn matrices S1 t/m S20 door elkaar zijn geschopt
De matrices zijn niet 'door elkaar geschopt'. Probeer het volgende maar eens:

Code: Selecteer alles

%twee keer S1 achter elkaar:

[S(1,[1,1]){:}]
roelbrooimans
Artikelen: 0
Berichten: 20
Lid geworden op: do 08 jan 2009, 17:14

Re: Rijvectoren verwisselen

ik heb de rest van de dag geen tijd meer maar ik zal dit weekend even kijken, hartstikke bedankt EvilBro!

Terug naar “Wiskunde”