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

Matlab plot erstellen aber nicht alle pkt. vom mat file ben.

 

thorstenroth
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 03.06.09
Wohnort: ---
Version: 2007a
     Beitrag Verfasst am: 03.06.2009, 10:05     Titel: Matlab plot erstellen aber nicht alle pkt. vom mat file ben.
  Antworten mit Zitat      
hallo,

leider ergab die sufu nichts! hier mein problem:

ich habe zwei verschiedene ströme, aus einer simulation und einer messung. beide liegen als mat file vor. nur habe ich das problem das die simulation 6s lang ist und die messung nur 1s. ich möchte zwei ströme aus jeder messung überlagern und dann vergleichen. wie kann man es anstellen das man nur die letze sekund von der simulation verwendet, als von sekunde 5-6 ?

hier mein skript:

Code:

load current_data_500rpm_0_064_load.mat
data = current_data_500rpm_0_064_load

load measurements_stator_currents_500rpm_20_7104.mat
clc


figure(1);
hold on;
grid on;
title('Current');
xlabel('Time [s]');
ylabel('Current Ia [A]');
% Current Ia
plot(data.X.Data(:),data.Y(6).Data(:),'r')
plot(scope_stator.time(:),scope_stator.signals.values(:,1),'b')
h = legend('I_a_measure','I_a_sim',2);
set(h,'Interpreter','none','Location','SouthEast')


figure(2);
hold on;
grid on;
title('Current');
xlabel('Time [s]');
ylabel('Current Ib [A]');
% Current Ib
plot(data.X.Data(:),data.Y(7).Data(:),'r')
plot(scope_stator.time(:),scope_stator.signals.values(:,2),'b')
h = legend('I_b_measure','I_b_sim',2);
set(h,'Interpreter','none','Location','SouthEast')


figure;
hold on;
grid on;
title('Current');
xlabel('Time [s]');
ylabel('Current Ic [A]');
% Current Ic
plot(data.X.Data(:),data.Y(8).Data(:),'r')
plot(scope_stator.time(:),scope_stator.signals.values(:,3),'b')
h = legend('I_c_measure','I_c_sim',2);
set(h,'Interpreter','none','Location','SouthEast')
 



bei dem plot(scope_stator.time(Smile,scope_stator.signals.values(:,1),'b') handelt es sich um das simulations signal. wie muss ich jetzt die werte ändern??? kann mir jemand helfen?

vielen dank,
thorsten
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 03.06.2009, 10:23     Titel:
  Antworten mit Zitat      
Moin,

du musst hier nur den Index angeben:
Code:
plot(scope_stator.time(50:end),scope_stator.signals.values(50:end,1),'b'); % wenn die Simulation 10 Datenpunkte pro Sekunde ausgibt
% ansonsten such erst nach dem letzten Index der kleiner ist als 5 sek:
idx = find(scope_stator.time<5,'last');
plot(scope_stator.time(idx:end),scope_stator.signals.values(idx:end,1),'b');
 


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
thorstenroth
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 03.06.09
Wohnort: ---
Version: 2007a
     Beitrag Verfasst am: 03.06.2009, 10:33     Titel:
  Antworten mit Zitat      
danke, muss ich gleich testen!

lg,
thorsten
Private Nachricht senden Benutzer-Profile anzeigen
 
thorstenroth
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 03.06.09
Wohnort: ---
Version: 2007a
     Beitrag Verfasst am: 03.06.2009, 10:40     Titel:
  Antworten mit Zitat      
steve hat Folgendes geschrieben:
Moin,

du musst hier nur den Index angeben:
Code:
plot(scope_stator.time(50:end),scope_stator.signals.values(50:end,1),'b'); % wenn die Simulation 10 Datenpunkte pro Sekunde ausgibt
% ansonsten such erst nach dem letzten Index der kleiner ist als 5 sek:
idx = find(scope_stator.time<5,'last');
plot(scope_stator.time(idx:end),scope_stator.signals.values(idx:end,1),'b');
 


Gruß
Alex


hallo alex,

habe jetzt mal deine lsg. getestet. bei mir sieht es so aus das ich ab datenpkt. 100000 sekunde 5 habe. dein zweiter ansatz funzt bei mir nicht, es kommt folgende fehlermeldung:

error using -> find
second argument must be a positive scalar integer

wo könnte da der fehler sein???

danke,
thorsten
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 03.06.2009, 10:46     Titel:
  Antworten mit Zitat      
Ein Blick in die Hilfe zeigt, dass FIND mehrere Übergabeparameter benötigt, also sollte es so klappen:
Code:
idx = find(scope_stator.time<5,1,'last');


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
thorstenroth
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 03.06.09
Wohnort: ---
Version: 2007a
     Beitrag Verfasst am: 03.06.2009, 10:55     Titel:
  Antworten mit Zitat      
super, hat geklappt! nur habe ich jetzt noch ein problem, wie schaffe ich es das es im plot nicht von sekunde 5-6 angezeigt wird, siehe anhang?

danke,
thorsten

test.fig
 Beschreibung:

Download
 Dateiname:  test.fig
 Dateigröße:  267.9 KB
 Heruntergeladen:  562 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 03.06.2009, 12:07     Titel:
  Antworten mit Zitat      
Die einfachste Lösung wäre:
Code:
plot(scope_stator.time(idx:end)-5,scope_stator.signals.values(idx:end,1),'b');


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
thorstenroth
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 03.06.09
Wohnort: ---
Version: 2007a
     Beitrag Verfasst am: 10.06.2009, 07:47     Titel:
  Antworten mit Zitat      
steve hat Folgendes geschrieben:
Die einfachste Lösung wäre:
Code:
plot(scope_stator.time(idx:end)-5,scope_stator.signals.values(idx:end,1),'b');


Gruß
Alex


danke alex! hat bestens funktioniert!!!

lg,
thorsten
Private Nachricht senden Benutzer-Profile anzeigen
 
thorstenroth
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 03.06.09
Wohnort: ---
Version: 2007a
     Beitrag Verfasst am: 03.08.2009, 13:21     Titel:
  Antworten mit Zitat      
hallo,

hab gerade wieder so plot problem. habe das file angefügt. ich möchte wieder einmal zwei plots miteinander vergleichen. irgendwie schaffe ich es nicht das ich wieder erst ab sekunde 0,3942 beginne und ab 0,9516 aufhöre mit dem plot!

hier der code:

Code:

load hochlauf_500rpm_leerlauf.mat
data = ans
clc


figure;
hold on;
grid on;
title('Currents FH Measurements');
xlabel('Time [s]');
ylabel('Current [A]');
% Currents
plot(data(:,1)/10000,data(:,2),'r')
plot(data(:,1)/10000,data(:,3),'b')
plot(data(:,1)/10000,data(:,4),'g')
h = legend('I_a','I_b','I_c',3);
set(h,'Interpreter','none','Location','SouthEast')

figure(2);
% Speed RPM
hold on;
grid on;
title('Speed FH Measurements');
xlabel('Time [s]');
ylabel('Speed [RPM]');
% Currents
% plot((data(:,1)/10000),data(:,5),'r')
% h = legend('Speed',1);
% set(h,'Interpreter','none','Location','SouthEast')



idx = find((data(:,1)/10000)<0.5,1,'last');
plot(data(idx:end)-0.5,data(idx:end,1),'b');
 


bei der letzten zeile bekomme ich immer eine fehlermeldung das der vektor in der selben länge sein muss. irgendwie finde ich den fehler nicht.

danke für dir hilfe,
thorsten
Private Nachricht senden Benutzer-Profile anzeigen
 
thorstenroth
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 03.06.09
Wohnort: ---
Version: 2007a
     Beitrag Verfasst am: 03.08.2009, 13:51     Titel:
  Antworten mit Zitat      
hallo,

hab die lsg. selbst gefunden:

Code:

idx = find((data(:,1)/10000)<0.3942,1,'last');
xlim([0 0.55])
plot((data(idx:end,1)/10000)-0.3942,data(idx:end,5),'b');
 


lg
thorsten
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.