WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Verbrauchskennfeld plotten

 

christ.fabian
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 13.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.03.2014, 14:14     Titel: Verbrauchskennfeld plotten
  Antworten mit Zitat      
Hallo:)
Ich möchte in ein bereits bestehendes Motorkennfeld mit Volllastkennlinie und Betriebspunkt das Verbrauchskennfeld einzeichnen.(bei betätigen eines push buttons)

zunächst mal meine Ausgangssituation:(Volllastkennlinie und Betriebspunkt)

Code:

% --- Executes on button press in pushbutton_motor.
function pushbutton_motor_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton_motor (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

axes(handles.grafik_motor)
x  = evalin('base','n_motor_volllast(1:16)');
y  = evalin('base','m_motor_volllast(1:16)');
x1 = evalin('base','m_motordrehzahl');
y1 = evalin('base','m_motormoment');
plot(x, y, x1, y1)

xlabel('Drehzahl [n]=1/min')
ylabel('Moment [M]=Nm')
 
guidata(hObject, handles)




Nun möchte ich den spezifischen Verbauch darstellen. Die Daten hierfür habe ich in 3 Vektoren:

Code:
% Drehzahl in [1/min]
n_be
% Moment in [Nm]
m_be
% spezifischer Kraftstoffverbrauch  in [g/kWh]
be


mein Ansatz hierfür ist falsch. HAt jemand eine bessere Idee bzw kann meinen Ansatz verbessern?
Code:

[ni,mi]=meshgrid(500:10:2200,-300:100:2400);
beff=griddata(n_be,m_be,be,ni,mi);
contour(ni,mi,beff,[500:10:2200,-300:10:2400])



vielen Dank!


EDIT by denny: Bitte die Codeformatierung verwenden.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.03.2014, 19:14     Titel:
  Antworten mit Zitat      
Hallo,

und woraus schließt du, dass dein Ansatz falsch ist?
Gibt es eine Fehlermeldung? Welche?
Ein unerwartetes Verhalten? Welches?

Mir erscheint das letzte Argument zu contour nicht sinnvoll gewählt, bitte die Doku dazu nachlesen (oder mal probieren, es wegzulassen).

Desweiteren:
- bitte die Code-Umgebung verwenden!
- evalin ist keine gute Programmierpraxis. Zum Verwalten von Daten innerhalb GUIs siehe
http://www.mathworks.de/de/help/mat.....-data-in-a-guide-gui.html

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
christ.fabian
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 13.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.03.2014, 07:00     Titel:
  Antworten mit Zitat      
Hey, sorry für die ungenaue beschreibung.
An sich funktionieren meine plots einwandfrei. Ich möchte die Volllastkennlinie und ein Verbrauchskennfeld in die gleiche axes einbauen. Beim Einbau in den Gui (Darstellung der Grafik durch Drücken eines pushbuttons) funktioniert es jedoch nicht mehr und es wird nur noch die Vollastkennlinie dargestellt.

Meine funktionierende Grafik in einem extra Fenster sieht so aus

Code:


figure
x  = evalin('base','n_motor_volllast');
y  = evalin('base','m_motor_volllast');
x1 = evalin('base','m_motordrehzahl');
y1 = evalin('base','m_motormoment');
plot(x, y,x1,y1)
hold on
% Drehzahl in [1/min]
n_be=....
% Moment in [Nm]
m_be=....
% spezifischer Kraftstoffverbrauch  in [g/kWh]
be=....
[xi,yi]=meshgrid(500:10:2200,-300:100:2400);
beff=griddata(n_be,m_be,be,xi,yi);
contour(xi,yi,beff,[500:10:2200,-300:10:2400]) ;
grid on
xlabel('Drehzahl [n]=1/min')
ylabel('Moment [M]=Nm')
legend('Volllastkennlinie','Betriebspunkt')



was genau muss ich beachten beim GUI?

Code:
function pushbutton_motor_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton_motor (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
axes(handles.grafik_motor)
.
.
.
.??????
.
.
.

guidata(hObject,handles)

 



mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.03.2014, 09:07     Titel:
  Antworten mit Zitat      
Hallo,

und was passiert mit der anderen Grafik? Wird sie gar nicht dargestellt? In einem anderen Fenster?

In GUIs würde ich bei Grafikbefehlen immer das Handle angeben, also
Code:
befehl(handles.axes1, ...)


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
christ.fabian
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 13.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.03.2014, 09:16     Titel:
  Antworten mit Zitat      
Die wird überhaupt nicht angezeigt.
ich bekomm es aber auch nicht hin nur das Verbauchskennfeld ....
Code:
% Drehzahl in [1/min]
n_be=....
% Moment in [Nm]
m_be=....
% spezifischer Kraftstoffverbrauch  in [g/kWh]
be=....
[xi,yi]=meshgrid(500:10:2200,-300:100:2400);
beff=griddata(n_be,m_be,be,xi,yi);
contour(xi,yi,beff,[500:10:2200,-300:10:2400]) ;
 


in dem gui zu plotten. in einer extra figure funktioniert es aber
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.03.2014, 11:28     Titel:
  Antworten mit Zitat      
Hallo,

dann versuch doch mal den zweiten Teil meines letzten Kommentars umzusetzen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
christ.fabian
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 13.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.03.2014, 11:30     Titel:
  Antworten mit Zitat      
hab ich schon versucht:)
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.03.2014, 11:34     Titel:
  Antworten mit Zitat      
... und das Ergebnis davon?
In einer separaten Figure wird es dann jedenfalls nicht landen.
Private Nachricht senden Benutzer-Profile anzeigen
 
christ.fabian
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 13.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.03.2014, 11:44     Titel:
  Antworten mit Zitat      
es funktioniert nicht. bzw es wird nur die volllastkennlinie dargestellt.
die Überlagerung hat funktioniert, wenn ich sie ganz normal in einem leeren m-file ausführe. in Kombination mit dem gui funktioniert es nicht.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.03.2014, 13:07     Titel:
  Antworten mit Zitat      
Hallo,

poste bitte den Code, in dem du dies umsetzt:
Zitat:
In GUIs würde ich bei Grafikbefehlen immer das Handle angeben, also
befehl(handles.axes1, ...)


Ansonsten wird nur ein reproduzierbares Beispiel helfen, in dem das Problem auftritt.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
christ.fabian
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 13.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.03.2014, 13:33     Titel:
  Antworten mit Zitat      
Code:
function pushbutton_motor_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton_motor (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
axes(handles.grafik_motor)
x  = evalin('base','n_motor_volllast');
y  = evalin('base','m_motor_volllast');
x1 = evalin('base','m_motordrehzahl');
y1 = evalin('base','m_motormoment');
plot(handles.grafik_motor,x, y,x1,y1)
xlabel(handles.grafik_motor,'Drehzahl [n]=1/min')
ylabel(handles.grafik_motor,'Moment [M]=Nm')
legend(handles.grafik_motor,'Volllastkennlinie','Betriebspunkt')
hold(handles.grafik_motor,'on')
grid(handles.grafik_motor,'on')

% n_be = Drehzahl in [1/min]
% m_be = Moment in [Nm]
% be = spezifischer Kraftstoffverbrauch  in [g/kWh]

[xi,yi]=meshgrid(500:10:2200,-300:100:2400);
beff=griddata(handles.grafik_motor,n_be,m_be,be,xi,yi);
contour(handles.grafik_motor,xi,yi,beff,[500:10:2200,-300:10:2400]);
guidata(hObject,handles.grafik_motor)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.03.2014, 13:46     Titel:
  Antworten mit Zitat      
Hallo,

der griddata-Befehl ist so nicht sinnvoll, da das Berechnen der Werte ja nichts mit der Grafik zu tun hat. Da würde ich auch eine entsprechende Fehlermeldung erwarten.
--> das erste Argument weglassen

Auch
Code:
guidata(hObject,handles.grafik_motor)

ist so nicht sinnvoll, da so nicht mehr die gesamte Handles-Struktur zur Verfügung stehen würde. Es muss weiterhin
Code:
guidata(hObject,handles)

heißen. Da du die Handles-Struktur aber ja nicht veränderst, ist die Zeile so oder so überflüssig.

Bei weiteren Problemen bitte angepassten Code oder, noch besser, lauffähiges Testbeispiel, an dem das Problem nachvollziehbar ist, zur Verfügung stellen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.03.2014, 09:14     Titel:
  Antworten mit Zitat      
Hallo,

siehe Anhang - ich weiß nicht, wo dein Problem in der Umsetzung lag.

Grüße,
Harald

Beispiel.m
 Beschreibung:

Download
 Dateiname:  Beispiel.m
 Dateigröße:  3.78 KB
 Heruntergeladen:  775 mal
Beispiel.fig
 Beschreibung:

Download
 Dateiname:  Beispiel.fig
 Dateigröße:  4.01 KB
 Heruntergeladen:  731 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
christ.fabian
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 13.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.03.2014, 14:51     Titel:
  Antworten mit Zitat      
vielen Dank!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.