[Matlab] grafiek tekenen
Moderators: ArcherBarry, Fuzzwood
-
- Berichten: 11
[Matlab] grafiek tekenen
Hallo, mijn naam is bart koopman en ik zit op de hogeschool van Rotterdam. ik studeer Autotechniek. nu zijn wij met het vak aandrijvingen aan de slag gegaan met het programma Matlab. ik probeer dat programma nu een grafiek van een bepaalde waardes te laten maken. maar hij geeft een foutmelding en ik weet niet hoe ik het verder moet gaan aanpassen.
dit voer ik in.
v=[0:10:70];
F_lucht=[0:10:1000];
F_lucht=c_w*A*rho*0.5*v^2
cw=0.3;
A=2.1;
rho=1.29;
plot(v,F_lucht),'r'
de foutmelding die ik krijg is
??? Error using ==> mpower
Matrix must be square.
ik hoop dat iemand mij verder kan helpen
dit voer ik in.
v=[0:10:70];
F_lucht=[0:10:1000];
F_lucht=c_w*A*rho*0.5*v^2
cw=0.3;
A=2.1;
rho=1.29;
plot(v,F_lucht),'r'
de foutmelding die ik krijg is
??? Error using ==> mpower
Matrix must be square.
ik hoop dat iemand mij verder kan helpen
-
- Berichten: 7.068
Re: [Matlab] grafiek tekenen
Hier gaat het fout. v^2 is v*v. Dit kan niet omdat v een vector is. Als je elk element van die vector wilt kwadrateren dan moet je de volgende notatie gebruiken: v.^2 (een punt voor de ^ dus).F_lucht=c_w*A*rho*0.5*v^2
Dit moet zijn: plot(v,F_lucht,'r')plot(v,F_lucht),'r'
-
- Berichten: 11
Re: [Matlab] grafiek tekenen
en jawel er komt netjes de uitkomst
F_lucht =
1.0e+003 *
0 0.0406 0.1625 0.3657 0.6502 1.0159 1.4629 1.9911
hartelijk dank voor het antwoord.
hier leer je tenmiste nog is wat. Dat kan ik niet zeggen van de lessen die ik volg. Nu begrijp ik ook waarom het niet lukt.
F_lucht =
1.0e+003 *
0 0.0406 0.1625 0.3657 0.6502 1.0159 1.4629 1.9911
hartelijk dank voor het antwoord.
hier leer je tenmiste nog is wat. Dat kan ik niet zeggen van de lessen die ik volg. Nu begrijp ik ook waarom het niet lukt.
-
- Berichten: 11
Re: [Matlab] grafiek tekenen
ik heb een nieuwe vraag. ik kom er niet uit om matlab een grafiek te laten tekenen met verschillende variabelen die al gegeven zijn en die dezelfde tijdsverloop hebben.
dit voer ik in>
v=[0:10:70];
Vmax=69.4;
cw=0.3;
A=2.1;
rho=1.29;
Frol=0.015;
F_lucht=c_w*A*rho*0.5*v.^2
Ftots=Frol+F_lucht;
Ptots=Ftots*Vmax;
Pmotor=263.6;
Pa=Pmotor-Ptots;
Fa=Pa/v;
Ftot=Ftots+F_lucht+Frol
nu wil ik matlab Fa Ftot en Ftots laten plotten in 1 grafiek tenopzichte van v
dit voer ik in>
v=[0:10:70];
Vmax=69.4;
cw=0.3;
A=2.1;
rho=1.29;
Frol=0.015;
F_lucht=c_w*A*rho*0.5*v.^2
Ftots=Frol+F_lucht;
Ptots=Ftots*Vmax;
Pmotor=263.6;
Pa=Pmotor-Ptots;
Fa=Pa/v;
Ftot=Ftots+F_lucht+Frol
nu wil ik matlab Fa Ftot en Ftots laten plotten in 1 grafiek tenopzichte van v
-
- Berichten: 7.068
Re: [Matlab] grafiek tekenen
c_w gebruik je later i.p.v. cw.cw=0.3;
Pa en v zijn vectoren. Je bedoelt waarschijnlijk Pa./v (weer die extra punt zodat de elementen van Pa en v gebruikt worden)Fa=Pa/v;
Dit is een optie: plot(v, [Fa; Ftots;Ftot])nu wil ik matlab Fa Ftot en Ftots laten plotten in 1 grafiek tenopzichte van v
Je kan er ook voor kiezen om het commando 'hold' te gebruiken ('hold on'). Tik in Matlab 'help hold' in voor de uitleg van het commando 'hold'.
-
- Berichten: 11
Re: [Matlab] grafiek tekenen
ok bedankt, het is gelukt. alleen moet ik zelf even uitzoeken waarom mijn data 1 negatief is. maar dat ligt niet aan matlab.
hartelijk dank.
hartelijk dank.
-
- Berichten: 7.068
Re: [Matlab] grafiek tekenen
ok bedankt, het is gelukt. alleen moet ik zelf even uitzoeken waarom mijn data 1 negatief is.
Gokje: Omdat je bij Pa een minteken mist?
-
- Berichten: 7.068
Re: [Matlab] grafiek tekenen
Helpt dit? (wederom een gokje):nee, want dan klopt de grafiek niet meer.
Code: Selecteer alles
clear all;
close all;
% Alle krachten hebben dezelfde referentierichting als de snelheid v.
v=[0.1:0.1:70];
c_w=0.3;
A=2.1;
rho=1.29;
% rolwrijving? tegengesteld aan v, dus '-1*':
Frol=-1*0.015;
% luchtwrijving staat tegengesteld aan v, dus '-1*':
F_lucht=-1*c_w*A*rho*0.5*v.^2
% totale kracht:
Fwrijving=Frol+F_lucht;
% Kracht die de motor levert bij snelheid v
Pmotor=263.6;
Fmotor = Pmotor./v;
% totale resulterende kracht:
Ftot = Fmotor + Fwrijving;
plot(v,[Ftot' Fmotor' F_lucht']);
-
- Berichten: 11
Re: [Matlab] grafiek tekenen
he een nieuwe vraag, ik ga hier maar verder.
ik moet nu een mfile schrijven maar dan iets verder werken.
een deel is gegeven en een deel moet ik zelf schrijven. ik voer dit in in matlab
disp('**** Ecologic_Berekening_voertuigweerstanden.m, stap 1 ****');
for v_max=69.4;
c_w=0.3;
A=2.1;
rho=1.29;
f_rol=0.015;
m=1630
g=9.81
for F_rol_max=f_rol*m*g;
F_lucht_max=c_w*A*rho*0.5*v_max.^2;
F_tot_s_max=F_rol_max+F_lucht_max;
P_tot_s_max=F_tot_s_max*v_max;
end
end
%
% vullen arrays voor grafieken
%
for aantal_stappen=10
i1=[0:aantal_stappen:70],
v=v_max*i1./aantal_stappen;
F_rol=F_rol_max;
F_lucht=c_w*A*rho*0.5*v.^2;
F_tot_s=F_rol+F_lucht;
P_tot_s=F_tot_s*v;
end
maar ik kom er niet achter wat ik fout doe, want ik krijg deze foutmelding
m =
1630
g =
9.8100
i1 =
0 10 20 30 40 50 60 70
??? Error using ==> mtimes
Inner matrix dimensions must agree.
als iemand mij verder kan helpen door te vertellen waar het fout gaat. dan zou ik echt blij zijn.
ik moet nu een mfile schrijven maar dan iets verder werken.
een deel is gegeven en een deel moet ik zelf schrijven. ik voer dit in in matlab
disp('**** Ecologic_Berekening_voertuigweerstanden.m, stap 1 ****');
for v_max=69.4;
c_w=0.3;
A=2.1;
rho=1.29;
f_rol=0.015;
m=1630
g=9.81
for F_rol_max=f_rol*m*g;
F_lucht_max=c_w*A*rho*0.5*v_max.^2;
F_tot_s_max=F_rol_max+F_lucht_max;
P_tot_s_max=F_tot_s_max*v_max;
end
end
%
% vullen arrays voor grafieken
%
for aantal_stappen=10
i1=[0:aantal_stappen:70],
v=v_max*i1./aantal_stappen;
F_rol=F_rol_max;
F_lucht=c_w*A*rho*0.5*v.^2;
F_tot_s=F_rol+F_lucht;
P_tot_s=F_tot_s*v;
end
maar ik kom er niet achter wat ik fout doe, want ik krijg deze foutmelding
m =
1630
g =
9.8100
i1 =
0 10 20 30 40 50 60 70
??? Error using ==> mtimes
Inner matrix dimensions must agree.
als iemand mij verder kan helpen door te vertellen waar het fout gaat. dan zou ik echt blij zijn.
-
- Berichten: 11
Re: [Matlab] grafiek tekenen
ik weet inmiddels dat hij vanaf de volgende regel foutmeldingen gaat geven
P_tot_s=F_tot_s*v;
P_tot_s=F_tot_s*v;
-
- Berichten: 7.068
Re: [Matlab] grafiek tekenen
Deze uitdrukking is raar. Het commando 'for' is normaal geschreven als:for v_max=69.4;
for i=Beginwaarde:Stapgrootte:Eindwaarde
Zoals jij het schrijft doet het for commando helemaal niks (de loop wordt maar een keer doorlopen).
Hetzelfde als commentaar als hierboven.for F_rol_max=f_rol*m*g;
idem. Volgens mij wil je trouwens hetvolgende doen: i1 = 0:1/(aantal_stappen-1):1for aantal_stappen=10
Dan is de benaming aantal_stappen ook daadwerkelijk correct.
F_tot_s is een 1x8 matrix. v ook! Het is niet mogelijk om een 1x8 matrix te vermenigvuldigen met een 1x8 matrix. Je wilt hier waarschijnlijk weer elementsgewijs vermenigvuldigen, dus zal je een punt moeten toevoegen.P_tot_s=F_tot_s*v;
-
- Berichten: 11
Re: [Matlab] grafiek tekenen
nou snap ik dus even iets niets hoe kom jij dan tot de conclusie dat F_tot_s een 1x8 matrix is?
-
- Berichten: 7.068
Re: [Matlab] grafiek tekenen
tik maar eens "size(F_tot_s)" in...nou snap ik dus even iets niets hoe kom jij dan tot de conclusie dat F_tot_s een 1x8 matrix is?
of gewoon "F_tot_s" (dan krijg je de matrix te zien).