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

min/max Werte von y als Funktion von x-Wert

 

flo
Forum-Newbie

Forum-Newbie



Beiträge: 9
Anmeldedatum: 14.04.08
Wohnort: ---
Version: R13 V6.5
     Beitrag Verfasst am: 16.04.2008, 17:01     Titel: min/max Werte von y als Funktion von x-Wert
  Antworten mit Zitat      
Grüß Gott allerseits,

habe ein Matrix mit 3 Spalten (x,y,z).
zur verdeutlichung:
0.01544 0.04824 8e-005
0.01544 0.04832 8e-005
0.01552 0.048 8e-005
0.01552 0.04808 8e-005
0.01552 0.04816 8e-005
0.01552 0.04824 8e-005
0.01552 0.04832 8e-005
0.01552 0.0484 8e-005
0.0156 0.04704 8e-005
...

würde mir jetzt gerne den max und min wert von y als Funktion
für alle unterschiedlichen x-werte auspucken lassen und die Werte in eine neue matrix kopieren lassen im gleichen format: x y(min) z
x y(max) z
d.h.
y(min) und y(max) für X-wert 0.01544
y(min) und y(max) für X-wert 0.01552
und so weiter und so weiter...

Danke euch!!

flo
Private Nachricht senden Benutzer-Profile anzeigen


Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 16.04.2008, 17:38     Titel:
  Antworten mit Zitat      
Hallo flo,

das geht mal wieder mit logischer Indizierung:

Code:
format long

x = M(:,1);
x_unique = unique(x)    % Doppelte Einträge löschen
y = M(:,2);

y_min = zeros(size(x_unique));   % Initialisieren
y_max = y_min;

for ind = 1:length(x_unique)
    y_min(ind) = min(y(x==x_unique(ind)));
    y_max(ind) = max(y(x==x_unique(ind)));
end

M_min = M;
M_min(:,2) = y_min
M_max = M;
M_max(:,2) = y_max



Herzliche Grüße
Bijick

PS: Wer hier die Schleife herausbekommt, hat meinen Respekt!
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
flo
Themenstarter

Forum-Newbie

Forum-Newbie



Beiträge: 9
Anmeldedatum: 14.04.08
Wohnort: ---
Version: R13 V6.5
     Beitrag Verfasst am: 16.04.2008, 18:09     Titel:
  Antworten mit Zitat      
Hi Bijick,
danke für die schnelle Hilfe.

es funzt erst, d.h ich bekomme die verschiedenen variablen als vektoren mit den richtigen werten.
dann allerdings kommt folgender fehler:
In an assignment A(:,matrix) = B, the number of rows in A and B
must be the same.

würde gerne als ergebnis eine matrix erhalten, die folgendermaßen aussieht:

x1-wert y(max)
x1-wert y(min)
x2-wert y(max)
x2-wert y(min)
...

möglicherweise ist das schon so programmiert. sorry bin erst am lernen
und muss erst mal zeile für zeile nachvollziehen, was sie bedeutet.



[/i]
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 16.04.2008, 19:02     Titel:
  Antworten mit Zitat      
hallo flo,

du hast recht! Ich war zum Ende hin zu voreilig. So klappt es:

Code:
x = M(:,1);
x_unique = unique(x)
y = M(:,2);

M_neu = zeros(2*length(x_unique),2);

for ind = 1:length(x_unique)
    M_neu(2*ind-1:2*ind,1)=x_unique(ind);
    M_neu(2*ind-1,2)=min(y(x==x_unique(ind)));
    M_neu(2*ind,2)=max(y(x==x_unique(ind)));
end


Zur Erklärung: Der Befehl x==x_unique(ind) bildet einen logischen vektor, der angibt, wo die Bedingung erfüllt ist. Nur da sollen die Werte aus y für die Suche des Minimums bzw. Maximums verwendet werden. Deshalb: min(y(x==x_unique(ind)))

Und für die Frage, wohin das jetzt geschrieben werden soll, musste ich etwas rechnen: Die beiden Werte zum ersten x-Wert sollen auf die Plätze 1 und 2, die Werte zum zweiten x-Wert auf 3 und 4 usw. Also immer auf die Plätze 2*ind-1 und 2*ind. Der x-Wert selbst soll zweimal auftauchen, deshalb wird er dem Vektor M_neu(2*ind-1:2*ind,1) zugewiesen. Das könnte man natürlich auch auf zwei Befehle aufteilen.

Hoffentlich wird es etwas klarer. Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
flo
Themenstarter

Forum-Newbie

Forum-Newbie



Beiträge: 9
Anmeldedatum: 14.04.08
Wohnort: ---
Version: R13 V6.5
     Beitrag Verfasst am: 16.04.2008, 20:15     Titel:
  Antworten mit Zitat      
Hi Bijick,

super, danke hat hervorragend funktioniert.
die finale matrix (deine plus die z-koordinate) hab ich jetzt auch geschafft Smile

werde mir deinen code aber mal ganz genau anschauen, damit ich auch 100%ig nachvollziehen kann, was da vor sich geht...

danke dir ganz herzlich!!

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