Jeroen_staal
Artikelen: 0
Berichten: 4
Lid geworden op: do 27 nov 2014, 15:27

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
physicalattraction
Moderator
Artikelen: 0
Berichten: 4.163
Lid geworden op: do 30 mar 2006, 15:37

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
Xenion
Artikelen: 0
Berichten: 2.609
Lid geworden op: za 21 jun 2008, 10:41

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.
Jeroen_staal
Artikelen: 0
Berichten: 4
Lid geworden op: do 27 nov 2014, 15:27

Re: Probleem vectoren en matrices Matlab

Heel erg bedankt voor de reactie! Het is me eindelijk gelukt  :D
EvilBro
Artikelen: 0
Berichten: 7.081
Lid geworden op: vr 30 dec 2005, 09:45

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);

Terug naar “Informatica en programmeren”