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

Wert aus Graphik ausgeben

 

demar
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 56
Anmeldedatum: 18.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2009, 20:54     Titel: Wert aus Graphik ausgeben
  Antworten mit Zitat      
Hallo!!!

ich möchte gerne aus der Funktion einen y_ga-Wert bei zum Beispiel x_ga=2 ablesen.wie mache ich das??
Code:

theta = (0:1:n)/n*pi;
theta(n+1)=pi; sintheta = sin(theta); sintheta(1) = 0; sintheta(n+1) = 0;

x = ones(n+1,1);
y = ones(n+1,1);

%%
for i=1:n+1
    if theta(i) <= pi/2
        x_ga(i) = d_fga/2 * abs(cos(theta(i))).^(2/n11)
        y_ga(i) = -h_fga * abs(sintheta(i)).^(2/n21);
    else
        x_ga(i) = -d_fga/2 * abs(cos(theta(i))).^(2/n12);
        y_ga(i) = -h_fga * abs(sintheta(i)).^(2/n22);
    end
end
 


danke schon mal im voraus!!
Private Nachricht senden Benutzer-Profile anzeigen


derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 29.10.2009, 21:12     Titel:
  Antworten mit Zitat      
Hi,

ich verstehe das so, dass du die Stelle möchtest, an der y_ga gleich 2 ist.

folgende Möglichkeiten:
1. eine if Abfrage in deiner Schleife einbauen.
2. binäre Darstellung:
Code:
bin=y_ga==2

3. index herausfinden:
Code:


Und am besten kein i und j in Schleifen nutzen, wegen Imaginärzahlen. Im Übrigen brauchst du bei deinem Problem keine Schleifen nutzen. Ich weiß ja nicht ob du Performance Probleme hast oder es mal gerne ohne Schleifen probieren möchtest.

Viele Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 29.10.2009, 21:22     Titel:
  Antworten mit Zitat      
Hi,

habs doch mal so probiert ohne Schleifen, müsste ungefähr so funktionieren:

Code:

thres=theta<=pi/2;
x_ga(thres) = d_fga/2 .* abs(cos(theta(thres))).^(2/n11);
x_ga(~thres)= -d_fga/2 .* abs(cos(theta(~thres))).^(2/n12);
 


Viele Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
demar
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 56
Anmeldedatum: 18.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2009, 22:24     Titel:
  Antworten mit Zitat      
Hi Oli...

irgendwie verstehe ich nicht was du gemacht hast. Ich erstelle ja quasi eine Kurve und möchte aus der erstellten Kurve einen x_wert an eine y-Stelle die ich vorgebe. wie soll ich denn das was du mir vorgeschlagen hast in meine Schleife einbauen?

Ich brauche die Schleife, weil es noch viel weiter geht und ich mein Quellcode zu sehr umschreiben müßte. Kannst du mir noch mal helfe?.Danke
Private Nachricht senden Benutzer-Profile anzeigen
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 30.10.2009, 13:34     Titel:
  Antworten mit Zitat      
Hi,

ja stimmt ich habe mich da verlesen, funktioniert aber so ähnlich. Ich verstehe das jetzt so, du hast einen x vector und einen y vector, welche du als kurve plottest, jetzt möchtest du y an der stelle wo x=2 ist. Das funktioniert so:

Code:

x=[0.5, 1, 1.5, 2, 2.5];
y = [1, 2, 3, 4, 5];
y1=y(x==2)
 


Viele Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
demar
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 56
Anmeldedatum: 18.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.10.2009, 21:39     Titel:
  Antworten mit Zitat      
Ich danke dir schon mal Oli, aber es klappt nur teilweise. in machen Stellen kriege ich eine Ausgabe, aber meistens kriege ich "Empty matrix: 1-by-0" ausgegeben. Eigentlich müßte Marlab irgendeinen Wert mir ausgeben. Weißt du woran es liegen könnte!!

Danke für deine Hilfe!!

Alex
Private Nachricht senden Benutzer-Profile anzeigen
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 31.10.2009, 21:47     Titel:
  Antworten mit Zitat      
Hallo,

ich tippe auf Abweichungen wegen Rundungsproblemen:
Code:
x = [1 2.0000001 3];
y = [1 2 3];
y(x==2)
 

liefert Deine Empty Matrix. Was Du eigentlich machen möchtest ist Interpolation:
Code:
y2 = interp1(x, y, 2);
 

Wenn die 2 zufällig genau (!) einen Wert in x trifft, bekommst Du y zurück. Wenn Du haarscharf daneben liegst, bekommst Du ein y zurück, was auch nur haarscharf daneben liegt. Ansonsten kannst Du noch mit 'nearest' als Parameter von interp1 tatsächlich nur genau Werte aus y zurückgeben.

Ciao,
Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
demar
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 56
Anmeldedatum: 18.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.10.2009, 22:10     Titel:
  Antworten mit Zitat      
hey..danke..eine Frage noch!

Das klappt alles gut solange die Kurve keine Parabel zum Beispiel ist und für jeden y-Wert zwei x-Werte man bekommt.Wie kann denn das lösen??
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.