Probleem vectoren en matrices Matlab

Moderators: jkien, Xilvo

Reageer
Berichten: 4

Probleem vectoren en matrices Matlab

Als tweedejaars student Scheikunde heb ik de opdracht gekregen een destillatiekolom te ontwerpen. Om de ideale temperatuur waarop het proces plaats moet vinden wil ik bepaalde grafieken modelleren over een bereik aan temperaturen. Hier heb ik het volgende voor gemaakt (dit is een voorbeeld dat niet geheel klopt, want ik kan het script niet uploaden, het gaat echter om het idee):

Code: Selecteer alles

alphavect = [];
xvect = [];
yvect = [];

for(T  = 298:550)
     alpha = T/3; 
     alphavect = [alphavect alpha];

     for(x = 0:0.01:1)
        xvect = [xvect x];

        y = (alpha*x)/((alpha-1)*x+1);
        yvect = [yvect y];
     end
end
Ik bereken dus 253 alpha's (dus 1x253 vector alphavect) en voor elk van die alpha's bereken ik 101 x'en (een xvect van 1x101). Als ik dit in mijn script zet en run krijg ik in de yvect een vector van 1x25553, terwijl ik graag zou willen dat bij iedere alpha een nieuwe rij met x'en wordt gevormd en dat yvect dus een 253x101 matrix wordt. 
 
Waarschijnlijk is dit een vrij simpele vraag, maar na heel veel googlen en tevergeefs navragen bij de docent kom ik er nog steeds niet uit. Ik hoop dat iemand mij daarom kan helpen :)
 
Met vriendelijke groet, 

Jeroen

Gebruikersavatar
Moderator
Berichten: 4.097

Re: Probleem vectoren en matrices Matlab

Je x is een rijvector, dus je y ook. Vervolgens zet je een rijvector NAAST wat je al had, dus je creeert dan een hele lange rij. De oplossing ligt voor de hand: of y een kolomvector maken (y = y') en dan pas aan yvect toevoegen, of hem eronder zetten i.p.v. ernaast (yvect = [yvect; y]).

Gebruikersavatar
Berichten: 2.609

Re: Probleem vectoren en matrices Matlab

Matrices initialiseren op [] en er dan rijen/kolommen aan toevoegen is ook geen efficiënte manier om te werken.
Als je op voorhand weet hoe groot de matrix zal worden dan initialiseer je deze beter met zeros(N,M) en dan gebruik je de indexatie matrix(:,i) om bv de i'de kolom te zetten op wat jij wil.

Berichten: 4

Re: Probleem vectoren en matrices Matlab

Heel erg bedankt voor de reactie! Het is me eindelijk gelukt  :D

Berichten: 7.068

Re: Probleem vectoren en matrices Matlab

Voor de lol... het programma wordt dus zo:

Code: Selecteer alles

alphavect = [298:550]'/3;
xvect = [0:0.01:1];
yvect = zeros(length(alphavect), length(xvect));

for i = 1:1:length(alphavect),
   yvect(i,:) = (alphavect(i)*xvect)./((alphavect(i)-1)*xvect+1);
end
maar het volgende is helemaal leuk :)

Code: Selecteer alles

alphavect = [298:550]'/3;
xvect = [0:0.01:1];
yvect = ((alphavect*ones(1,length(xvect))).*(ones(length(alphavect),1)*xvect))./(((alphavect*ones(1,length(xvect)))-1).*(ones(length(alphavect),1)*xvect)+1);

Reageer