Springen naar inhoud

[Matlab] grafiek tekenen


  • Log in om te kunnen reageren

#1

bartkoopman

    bartkoopman


  • 0 - 25 berichten
  • 11 berichten
  • Gebruiker

Geplaatst op 18 januari 2006 - 13:23

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 forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

EvilBro

    EvilBro


  • >5k berichten
  • 6703 berichten
  • VIP

Geplaatst op 18 januari 2006 - 14:04

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

#3

bartkoopman

    bartkoopman


  • 0 - 25 berichten
  • 11 berichten
  • Gebruiker

Geplaatst op 18 januari 2006 - 14:35

bedankt, ik ga het even uitproberen

#4

bartkoopman

    bartkoopman


  • 0 - 25 berichten
  • 11 berichten
  • Gebruiker

Geplaatst op 18 januari 2006 - 14:38

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.

#5

bartkoopman

    bartkoopman


  • 0 - 25 berichten
  • 11 berichten
  • Gebruiker

Geplaatst op 18 januari 2006 - 15:18

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

#6

EvilBro

    EvilBro


  • >5k berichten
  • 6703 berichten
  • VIP

Geplaatst op 18 januari 2006 - 15:28

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'.

#7

bartkoopman

    bartkoopman


  • 0 - 25 berichten
  • 11 berichten
  • Gebruiker

Geplaatst op 18 januari 2006 - 15:52

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.

#8

EvilBro

    EvilBro


  • >5k berichten
  • 6703 berichten
  • VIP

Geplaatst op 18 januari 2006 - 15:55

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?

#9

bartkoopman

    bartkoopman


  • 0 - 25 berichten
  • 11 berichten
  • Gebruiker

Geplaatst op 19 januari 2006 - 13:04

nee, want dan klopt de grafiek niet meer.

#10

EvilBro

    EvilBro


  • >5k berichten
  • 6703 berichten
  • VIP

Geplaatst op 19 januari 2006 - 15:41

nee, want dan klopt de grafiek niet meer.


Helpt dit? (wederom een gokje):

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.

#11

bartkoopman

    bartkoopman


  • 0 - 25 berichten
  • 11 berichten
  • Gebruiker

Geplaatst op 15 februari 2006 - 12:32

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.

#12

bartkoopman

    bartkoopman


  • 0 - 25 berichten
  • 11 berichten
  • Gebruiker

Geplaatst op 15 februari 2006 - 12:43

ik weet inmiddels dat hij vanaf de volgende regel foutmeldingen gaat geven

P_tot_s=F_tot_s*v;

#13

EvilBro

    EvilBro


  • >5k berichten
  • 6703 berichten
  • VIP

Geplaatst op 15 februari 2006 - 13:03

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.

#14

bartkoopman

    bartkoopman


  • 0 - 25 berichten
  • 11 berichten
  • Gebruiker

Geplaatst op 15 februari 2006 - 13:17

nou snap ik dus even iets niets hoe kom jij dan tot de conclusie dat F_tot_s een 1x8 matrix is?

#15

EvilBro

    EvilBro


  • >5k berichten
  • 6703 berichten
  • VIP

Geplaatst op 15 februari 2006 - 14:11

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





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures