[Matlab] grafiek tekenen

Moderators: ArcherBarry, Fuzzwood

Reageer
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

Berichten: 7.068

Re: [Matlab] grafiek tekenen

F_lucht=c_w*A*rho*0.5*v^2
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).
plot(v,F_lucht),'r'
Dit moet zijn: plot(v,F_lucht,'r')

Berichten: 11

Re: [Matlab] grafiek tekenen

bedankt, ik ga het even uitproberen

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.

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

Berichten: 7.068

Re: [Matlab] grafiek tekenen

cw=0.3;
c_w gebruik je later i.p.v. cw.
Fa=Pa/v;
Pa en v zijn vectoren. Je bedoelt waarschijnlijk Pa./v (weer die extra punt zodat de elementen van Pa en v gebruikt worden)
nu wil ik matlab Fa Ftot en Ftots laten plotten in 1 grafiek tenopzichte van v
Dit is een optie: plot(v, [Fa; Ftots;Ftot])

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.

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: 11

Re: [Matlab] grafiek tekenen

nee, want dan klopt de grafiek niet meer.

Berichten: 7.068

Re: [Matlab] grafiek tekenen

nee, want dan klopt de grafiek niet meer.
Helpt dit? (wederom een gokje):

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']);
Als Ftot negatief wordt, kan de motor volgens mij de wrijving niet overwinnen.

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.

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;

Berichten: 7.068

Re: [Matlab] grafiek tekenen

for v_max=69.4;
Deze uitdrukking is raar. Het commando 'for' is normaal geschreven als:

for i=Beginwaarde:Stapgrootte:Eindwaarde

Zoals jij het schrijft doet het for commando helemaal niks (de loop wordt maar een keer doorlopen).
for F_rol_max=f_rol*m*g;
Hetzelfde als commentaar als hierboven.
for aantal_stappen=10
idem. Volgens mij wil je trouwens hetvolgende doen: i1 = 0:1/(aantal_stappen-1):1

Dan is de benaming aantal_stappen ook daadwerkelijk correct.
P_tot_s=F_tot_s*v;
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.

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

nou snap ik dus even iets niets hoe kom jij dan tot de conclusie dat F_tot_s een 1x8 matrix is?
tik maar eens "size(F_tot_s)" in...

of gewoon "F_tot_s" (dan krijg je de matrix te zien).

Reageer