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

"line" Funktion unterbrechen, mit einer anderen fo

 

Zero1214
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 16.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.09.2014, 13:19     Titel: "line" Funktion unterbrechen, mit einer anderen fo
  Antworten mit Zitat      
Hallo Leute,

ich muss derzeit einen Verlauf in ein Diagramm zeichnen, indem auch Abbrüche von "line"-Funktionen notwendig sind. Der notwendige Teil des Programms ist:

Code:

for i=0:14
    if f710Hz(a(2,7)-29,2)+i<f900Hz(a(2,8)-29,2);     %Vergleich der y-Werte
    x8 = f710Hz(a(2,7)-29,1):f900Hz(a(2,8)-29,1);    %Bereich der x-Werte
    T2 =   [439.7896 585.4245];                               %Beispielpunkte für...
    S2 =   [335.1877 406.3376];                         %den Anstieg der Schrägen
    m8 = (T2(2)-T2(1))/(S2(2)-S2(1))*(1);               %Anstieg der Schrägen
    n8 = f560Hz(a(2,7)-29,2)-m8*f710Hz(a(2,8)-29,1);
    y8 = @(x8) m8*x8+n8;                               %Funktion der Schrägen
    h = line(x8,y8(x8));                                     %Zeichnung der Schrägen
       if f710Hz(a(2,7)-29,2)>f900Hz(a(2,8)-29,2);    %Abbruchkriterium
            %y8(x8)==f900Hz(a(2,8)-29,2)               %Synonym für Abbruchk.
            break
       end;
    end;
    set(h,'LineWidth',4.1)                               %Linie verbreitern
    if y8(f900Hz(a(2,8)-29,1))>f900Hz(a(2,8)-29,2)   %waagerechte Linie
        h=line([f710Hz(a(2,8)-29,1),f900Hz(a(2,8)-29,1)],[f710Hz(a(2,8)-29,2),f710Hz(a(2,8)-29,2)]);
    end;


Mein Problem ist es, dass die schräg einfallenden Linie dort enden müsste, bei dem sich die waagerechte befindet mit einem fließenden Übergang, sodass eine Ecke entsteht. Jedoch wird die Funktion nicht unterbrochen, sondern normal ausgeführt.
Ich schätze es liegt daran, dass nicht wirklich eine Schleife durchlaufen wird und nur eine simple Abfrage am Anfang, ob der eine Wert größer als der andere ist. Nun soll aber für den Fall, dass der eine Wert nicht mehr größer sondern kleiner als der andere ist, die Linienfunktion unterbrochen und mit der waagerechten Linienfunktion fort gefahren werden.

Zur Verdeutlichung habe ich noch eine Abbildung beigefügt, bei dem die gewollte Ecke zu erkennen ist, jedoch auch Weiterführung der Linien, die nicht gewollt sind.
Vielen Dank für eure Hilfe!

Ecke.png
 Beschreibung:

Download
 Dateiname:  Ecke.png
 Dateigröße:  138.88 KB
 Heruntergeladen:  380 mal
Private Nachricht senden Benutzer-Profile anzeigen


Zero1214
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 16.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.09.2014, 11:09     Titel:
  Antworten mit Zitat      
Wer von euch vor einem änlichen Problem steht, kann sich an diesen Code halten, bei mir funktioniert es:

Code:

    x1 = f90Hz(a(2,1)-29,1):f180Hz(a(2,2)-29,1);    %X-Bereich, in dem ..
    if a(2,1)>77                                                   % gezeichnet werden soll
    S=S1; T=T1;
    elseif 65<=a(2,1) && a(2,1)<=77                 %Ermittlung des Anstiegs
    S=S2; T=T2;
    elseif 50<=a(2,1) && a(2,1)<=65
    S=S3; T=T3;
    else
    S=S4; T=T4;
    end;
    m1 = (T(2)-T(1))/(S(2)-S(1));
    n1 = f90Hz(a(2,1)-29,1)-m1*f90Hz(a(2,1)-29,1);
    y1 = @(x1) m1*x1+n1;                                      %Funktion der Geraden
    if y1(f180Hz(a(2,2)-29,1))>f90Hz(a(2,2)-29,2)
      x1_Schnittpunkt =(f90Hz(a(2,2)-29,2)-n1)/m1;     %entspricht der Ecke
      x1_neu = f90Hz(a(2,1)-29,1):x1_Schnittpunkt;
      y1_neu = @(x1_neu) m1*x1_neu+n1;
      h = line(x1_neu,y1_neu(x1_neu));      %Schräge bis Ecke zeichnen
      h2 = line([x1_Schnittpunkt,f180Hz(a(2,2)-29,1)],      %Gerade ..
                    [f90Hz(a(2,2)-29,2),f90Hz(a(2,2)-29,2)]);   %weiterführen
      set(h2,'LineWidth',4.1)          %Linien dicker zeichnen
    else
      h=line(x1,y1(x1));         %falls nicht Ecke, nur Schräge Linie zeichnen
    end;    
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.