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

y1,y2 Werte richtig Filtern und plotten

 

hendymendy
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 15.01.13
Wohnort: ---
Version: R2011a (x64)
     Beitrag Verfasst am: 25.01.2013, 12:17     Titel: y1,y2 Werte richtig Filtern und plotten
  Antworten mit Zitat      
Hallo,
habe ein Problem mit Filtern und anschließendem Plotten von Werten. Es gibt verschiedene y-Achsen und ein x-Achse. Wobei die Vektorlänge der y-Werte unterschiedlich ist. Vereinfacht soll das ganze so aussehen:
x y1 y2
1 1 -
2 2 1
3 3 2
4 4 -
Der bisherig vereinfachte Code lautet:
Code:

pinj=1.013
p0=0.04  
Ts=XSteam('Tsat_p',p0)
p=50;
q = 1;
s = -1;
r=99;
i=1;
for TmaxC = r:s:q,
   
    dTshmax=TmaxC-Ts
if (dTshmax<=0), break, end
We=Weitere Berechnung in Abhängigkeit von dTshmax
A(i,1)=TmaxC
A(i,2)=dTshmax
A(i,3)=Ts
A(i,4)=We
i=i+1;
end
for TinjC = p:s:q,
    dTsh=TinjC-Ts
    if(dTsh<=0), break, end
    B(i,1)=TinjC
    B(i,2)=dTsh
    i=i+1;    
end

Aufgetragen soll nun x= We, y1=dTshmax, y2=dTsh. dTsh schreibt wie erwartet Nullen bevor dTshmax = dTsh wird. Nun bekomme ich es nicht hin, dass die Routine die passenden x-Werte zu den y2-Werten herausfiltert und aufträgt. Mit
Code:
filter(1,B(i,2)=A(i,2),A(i,4))
und diversen anderen Formulierungen funktioniert es leider nicht. Auch das "händische" Auftragen im Plotting Tool geht nicht. Dann bekomme ich die Fehlermeldung sinngemäß: "Vectors must have the same length".
Ich hoffe es gibt eine simple Lösung und danke schon mal für Vorschläge.
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 25.01.2013, 12:26     Titel: Re: y1,y2 Werte richtig Filtern und plotten
  Antworten mit Zitat      
Hallo hendymendy,

Ich verstehe die Frage nicht.

Zitat:
Vereinfacht soll das ganze so aussehen:
x y1 y2
1 1 -
2 2 1
3 3 2
4 4 -

Möchtest Du also eine Tabelle ausgeben? Was bedeutet das Minus-Zeichen hier?

Zitat:
Mit
Code:
filter(1,B(i,2)=A(i,2),A(i,4))
und diversen anderen Formulierungen funktioniert es leider nicht.

Bitte poste den verwendeten Code und die Fehelermeldung, bzw Beschreibung des Unterschiedes zwischen Erwartungen und Ergebnissen. "Funktioniert nicht" hilft uns nicht weiter. Auch sinngemäße Wiedergaben der Fehlermeldungen verbergen oft wichtige Details. Eine Kopie ist besser.

Hier steht im Code eine Zuweisung, nämlich B(i,2)=A(i,2). Meinst du vielleicht "==" ?

Ich verstehe nicht, was das Problem mit dem FILTER-Befehl zu tun hat. Ich vermute ein "logical Indexing" ist gesucht.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
hendymendy
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 15.01.13
Wohnort: ---
Version: R2011a (x64)
     Beitrag Verfasst am: 25.01.2013, 12:46     Titel:
  Antworten mit Zitat      
Hallo Jan,
danke für die Antwort.

Zitat:
Möchtest Du also eine Tabelle ausgeben? Was bedeutet das Minus-Zeichen hier?
Das sollte den kürzeren Vektor verdeutlichen "-" steht für kein Wert bzw. 0. Tabelle möchte ich nicht ausgeben, sondern die y-Daten sollen grafisch über die gleichen x-Werte aufgetragen werden.
Zitat:
Bitte poste den verwendeten Code und die Fehelermeldung, bzw Beschreibung des Unterschiedes zwischen Erwartungen und Ergebnissen. "Funktioniert nicht" hilft uns nicht weiter. Auch sinngemäße Wiedergaben der Fehlermeldungen verbergen oft wichtige Details. Eine Kopie ist besser.

Fehlermeldung:
??? Index exceeds matrix dimensions.

Error in ==> Untitled at 41
filter(1,B(i,1)==A(i,1),A(i,3))

Erwartung: Das automatisch die y2-Werte (dTsh) den passenden x-Werten (We) zugeordnet werden und nicht nur die y1-Werte (dTshmax). Das diese Werte sozusagen "herausgefiltert" werden. Ob nun der FILTER-Befehl der richtige ist oder nicht, habe ich gehofft hier zu erfahren. Habe schon länger den Verdacht, dass er dafür evtl. nicht geeignet ist Sad

Hoffe es ist jetzt ein bisschen klarer geworden.
Gruß,
hendymendy
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 25.01.2013, 13:26     Titel:
  Antworten mit Zitat      
Hallo hendymendy,

"help filter" legt nahe, dass dieser Befehl für andere Zwecke gedacht ist.

Zitat:
Erwartung: Das automatisch die y2-Werte (dTsh) den passenden x-Werten (We) zugeordnet werden und nicht nur die y1-Werte (dTshmax).

Es ist verwirrend, dass in Deinem Code gar kein "y1" und "y2" vorkommt. Darum ist mir immer noch nicht klar, was Du genau erreichen möchtest.

Vielleicht hilft dies weiter:
Code:
axes('nextplot', 'add');  % equivalent: hold on
x = 1:10;
y1 = rand(1, 10);
plot(x, y1, 'r');
y2 = [NaN, NaN, rand(1, 6), NaN, NaN];
plot(x, y2, 'b');
y2 = rand(1, 8) + 0.5;
plot(x(2:7), y2, 'g');

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
hendymendy
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 15.01.13
Wohnort: ---
Version: R2011a (x64)
     Beitrag Verfasst am: 25.01.2013, 14:32     Titel:
  Antworten mit Zitat      
Danke Jan,
ich werde den Vorschlag mal probieren.
Zitat:
Es ist verwirrend, dass in Deinem Code gar kein "y1" und "y2" vorkommt. Darum ist mir immer noch nicht klar, was Du genau erreichen möchtest.

y1 und y2 sollte hier nur die zwei y-Achsen widerspiegeln. Dachte es wäre so verständlicher Embarassed Im Code sind diese dTshmax und dTsh
Private Nachricht senden Benutzer-Profile anzeigen
 
hendymendy
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 15.01.13
Wohnort: ---
Version: R2011a (x64)
     Beitrag Verfasst am: 25.01.2013, 17:13     Titel:
  Antworten mit Zitat      
Hallo Jan,
habe es leider so nicht hinbekommen. Das Problem war auch nie wirklich das Plotten, sondern die zu plottenden Daten aus den beiden for Schleifen zu verknüpfen, da die Vektoren unterschiedliche Länge haben. Auch kenne ich deren länge i.d.R. nicht. Lasse nun alles einfach in beiden for-Schleifen doppelt berechnen mit unterschiedlichen Laufnummern, damit gehts.
Code:
pinj=1.013
p0=0.04  
Ts=XSteam('Tsat_p',p0)
p=50;
q = 1;
s = -1;
r=99;
i=1;
k=1;
for TmaxC = r:s:q,    
    dTshmax=TmaxC-Ts
if (dTshmax<=0), break, end
We=Weitere Berechnung in Abhängigkeit von dTshmax
A(i,1)=TmaxC
A(i,2)=dTshmax
A(i,3)=Ts
A(i,4)=We
i=i+1;
end
for TinjC = p:s:q,
    dTsh=TinjC-Ts
    if(dTsh<=0), break, end
We=Weitere Berechnung in Abhängigkeit von dTsh
    B(i,1)=TinjC
    B(i,2)=dTsh
B(k,3)=We
    k=k+1;    
end
plot1(A(:,4), A(:,2), B(:,3), B(:,2))


Für Vorschläge zur Vereinfachung, Verknüpfung oder Zusammenfassen der for-Schleife bin ich dennoch dankbar. Da ich doch wahrscheinlich einen eher unnötig komlizierten Weg genommen habe Smile
Gruß,
hendymendy
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 - 2025 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.