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

Löschen der Linien außerhalb der Grafik

 

cem88
Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 25.03.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.04.2015, 13:29     Titel: Löschen der Linien außerhalb der Grafik
  Antworten mit Zitat      
Weiss jemand wie kann ich Linien außerhalb der Grafik löschen? Gibst es Code dafür ? kann jemand mir helfen?
Danke im Voraus

compmat.png
 Beschreibung:

Download
 Dateiname:  compmat.png
 Dateigröße:  37.56 KB
 Heruntergeladen:  422 mal
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: 30.04.2015, 20:30     Titel: Re: Löschen der Linien außerhalb der Grafik
  Antworten mit Zitat      
Hallo cem88,

Habe ich die Frage heute nicht schon mal beantwortet? Merkwürdig.

Nochmal: Was bedeutet "außerhalb"? Ich erkenne nicht, wo die Grafik aufhört.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 25.03.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2015, 07:48     Titel:
  Antworten mit Zitat      
http://www.bing.com/images/search?q.....rggFgEomfA&ajaxhist=0


Das Verdichterkennfeld muss wie das Bild aussehen...
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: 04.05.2015, 10:47     Titel:
  Antworten mit Zitat      
Hallo cem88,

Das hilft noch nicht weiter. Welche Input-Daten hast Du zur Verfügung? Welche Operation soll genau ausgeführt werden? Was hast Du bisher versucht? Und woran scheitert es genau?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 25.03.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2015, 11:54     Titel:
  Antworten mit Zitat      
Code:
Wirkungsgrad
    eta_c_tt_is_hun=ceil(eta_c_tt_is*100)

    %% Compressor

    for i=1:length(indices)
        [Max_mdot_corr(i),k(i)]=max(mdot_corr(indices{1,i}))
        [Min_mdot_corr(i),k1(i)]=min(mdot_corr(indices{1,i}))
    end


    for s=1:length(k)
        zeilenum_max(s)=indices{1,s}(k(1,s))
        PI_C_tt_comp_max(s)=PI_C_tt(zeilenum_max(1,s))
        zeilenum_min(s)=indices{1,s}(k1(1,s))
        PI_C_tt_comp_min(s)=PI_C_tt(zeilenum_min(1,s))
    end

    %% Vector                                                                                                                      
    mdot_corr_vec=mdot_corr(: );
    PI_C_tt_vec=PI_C_tt(: );
    eta_c_tt_is_vec=eta_c_tt_is(: );

    %% Pumpgrenze/Stopfgrenze/Drehzahlinien
    hold on
    %% Drehzahllinien
    for j=1:length(indices)
    plot3(mdot_corr(indices{1,j}(1:end)),PI_C_tt(indices{1,j}(1:end)),eta_c_tt_is_hun(indices{1,j}(1:end)),'-bs','Linewidth',1.5,...
    'MarkerEdgeColor','b');

    %%Stopfgrenze
    plot(Max_mdot_corr(1,: ),PI_C_tt_comp_max(1,: ),'linewidth',2)


    %% Pumpgrenze
    plot(Min_mdot_corr(1,: ),PI_C_tt_comp_min(1,: ),'linewidth',2)
    %%Wirkungsgradlinien
    Wnodes=length(mdot_corr);
    PRnodes=length(mdot_corr);
    smooth=1.5;
    [eff_grid,M_grid,P_grid]=gridfit(mdot_corr_vec,PI_C_tt_vec,eta_c_tt_is_vec,Wnodes,PRnodes,'smoothness',smooth);
    tx=linspace(min(mdot_corr),max(mdot_corr),40);
    ty=linspace(min(PI_C_tt),max(PI_C_tt),40);
    eff_grid_text=ceil(eff_grid*100);


Ich hab gridtfit von Mathworks heruntergeladen da ich Interpolation machen sollte.
Mein Massenstrom ist [1*40] Matrix
Druckverhältniss ist auch [1*40] Matrix > PI_C_tt
ich brauche Muschellinien darzustellen deswegen habe ich den Code " contour" verwendet. Zur Anwednung des Codes 'contour' muss dritte Parameter [40*40] sein. Der dritte Parameter eff_grid ist [40*40]Matrix. ich hab 40*40 Matrix durch M-File gridfit gekrigt. Ich hoffe dass ich gut erklärt habe..
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.05.2015, 13:31     Titel:
  Antworten mit Zitat      
Hallo,

wenn ich das richtig verstehe, sollen die Höhenlinien außerhalb der blauen Markierungen nicht gezeichnet werden.

Vorschlag dazu:
- konvexe Hülle der blau markierten Punkte bestimmen (z.B. convhull)
- Datenpunkte für contour-Befehl außerhalb der konvexen Hülle auf NaN setzen

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
cem88
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 25.03.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.05.2015, 14:39     Titel:
  Antworten mit Zitat      
ich habe gestern mit Nan beschäftigt aber leider keine Lösung gefunden. Heute habe ich convhull recherchiert und Code geschrieben aber weiss ich nicht wie ich die Linien außerhalb der Grafik gezeichnet sind zu löschen. Wenn ich mich nicht irre , definiert man die Grenzen von convex hull..
mein code dazu:
Code:

    %% Delaunay Triangilation
    tx=tx(:)
    ty=ty(:)
    DT = delaunayTriangulation(tx,ty);
    H=convexHull(DT)
Private Nachricht senden Benutzer-Profile anzeigen
 
cem88
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 25.03.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.05.2015, 11:50     Titel:
  Antworten mit Zitat      
i want to remove contour lines which are placed outside of my graph. I used inpolygon to define Points which are outside of my graph but when i plot my compressor map i realized that matlab removes almost every contour lines inside of graph too. here i send my codes..i attached my mfile. Thank you in advance( Sie können mir auch deutsch antworten. ich habe meine frage auf englisch gestellt da ich vielleicht mein Problem besser erklären kann)

compressor_uniq.m
 Beschreibung:

Download
 Dateiname:  compressor_uniq.m
 Dateigröße:  6.34 KB
 Heruntergeladen:  440 mal
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: 07.05.2015, 13:01     Titel:
  Antworten mit Zitat      
Hallo cem88,

Der Code verwirrt mich deutlich.
Code:
lineno1=['1            ';'1            ';'1            ';'1            '; ...
'1            ';'1            ';'1            ';'1            ';'1            '; ...
'1            ';'2            ';'2            ';'2            ';'2            '; ...
'2            ';'2            ';'2            ';'2            ';'2            '; ...
'2            ';'3            ';'3            ';'3            ';'3            '; ...
'3            ';'3            ';'3            ';'3            ';'3            '; ...
'3            ';'4            ';'4            ';'4            ';'4            '; ...
'4            ';'4            ';'4            ';'4            ';'4            ';'4            '];

% Nun ist lineno1 ein CHAR.
lineno1_1=char(lineno1);
% Hier machst Du aus dem CHAR ein CHAR ?! Aber wozu? Und lineno1_1
% ist ein schräger Name.

lineno1_1_1=str2num(lineno1_1);
% Der Name mit 1_1_1 ist noch schräger.

% Wie wäre etwas wie dies:
LineIndex = repmat((1:4).', 1, 10);
LineIndexStr = (sprintf('%13d', LineIndex);
% das ist kompakter und man bekommt ohne mühseliges Abzählen
% heraus, was überhaupt gemeint ist.

a=unique(lineno1_1_1);
for i=1:length(a);    
    indices{i}=find(lineno1_1_1==a(i));
end
f1=figure(1);
mdot_corr=[0.01....
for i=1:length(a);
    indices{i}=find(lineno1_1_1==a(i));
end

Wieso wird indices zwei mal erstellt?

Aber mein Hauptproblem bleibt: Ich habe immer noch nicht verstanden, was "außerhalb der Grafik" bedeutet. Damit verstehe ich den Kern der Frage nicht.
Code:
% eff_grid(ausserhalb_verdichter)=nan;

Dies könnte die Schlüssel-Zeile sein. Aber "ausserhalb_verdichter" ist nicht definiert. Warum ist die Zeile auskommentiert?

Viele Grüße, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
cem88
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 25.03.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.05.2015, 13:21     Titel:
  Antworten mit Zitat      
Code:
ausserhalb_verdichter=inpolygon(M_grid,P_grid,mdot_corr,PI_C_tt);
          eff_grid(ausserhalb_verdichter)=nan


Sorrry ich hab viel probiert und deswegen habe ich euch falsche Codes geschickt.
Ich glaube gesten einen Kink geschickt. Dort kann man sehen wie ein Verdichterkennfeld aussehen sollte. Wie du merkst , Wirkungsgradlinien gehen raus. Sie müssen bis den Grenzen gezeichnet werden...
hier findest du wieder den link:
http://www.bing.com/images/search?q.....jCfQ9pRyHA&ajaxhist=0

Manche lininen überschreiten die Pumpgrenze (links) die Stopfgrenze(rechts).
Die andere Fehler die ich gemacht habe. Ich weiss dass ich manche Fehler gemacht habe. ich hab noch nicht in mein Hauptprogram implementiert. Wenn ich mein großes Problem schaffe, überprüfe ich meine Codes nochmal und korrigiere ich meine Fehler...
Ich bedanke mich für deine Hilfe

Zuletzt bearbeitet von cem88 am 07.05.2015, 13:54, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
cem88
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 25.03.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.05.2015, 13:51     Titel:
  Antworten mit Zitat      
Und ich habe gridfit Funktion von dem Mathworks heruntergeladen. ich hänge grad die Datei an.

gridfit.m
 Beschreibung:

Download
 Dateiname:  gridfit.m
 Dateigröße:  33.33 KB
 Heruntergeladen:  394 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
cem88
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 25.03.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.05.2015, 14:04     Titel:
  Antworten mit Zitat      
Code:
Wnodes=length(mdot_corr);
   PRnodes=length(mdot_corr);
   smooth=1.5;
   [eff_grid,M_grid,P_grid]=gridfit(mdot_corr_vec,PI_C_tt_vec,eta_c_tt_is_vec,Wnodes,PRnodes,'smoothness',smooth);
   tx=linspace(min(mdot_corr),max(mdot_corr),40);
%tx=tx(:);
   ty=linspace(min(PI_C_tt),max(PI_C_tt),40);
%ty=ty(:);
ausserhalb_verdichter=~inpolygon(M_grid,P_grid,mdot_corr,PI_C_tt);
eff_grid(ausserhalb_verdichter)=nan;

   eff_grid_text=ceil(eff_grid*100);
   [C,h]=contour(M_grid,P_grid,eff_grid,11)

Wenn ich wie oben mein Program ausführe löscht das Programm viele werte und sieht mein Grafik so aus


verdichtergo.png
 Beschreibung:

Download
 Dateiname:  verdichtergo.png
 Dateigröße:  20.42 KB
 Heruntergeladen:  401 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.05.2015, 22:04     Titel:
  Antworten mit Zitat      
Hallo,

andere Idee:
die ungewünschten Linien mit weißen Patches überlagern.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
cem88
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 25.03.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.05.2015, 08:33     Titel:
  Antworten mit Zitat      
Kannst du mir etwas vorschlagen wie kann ich das machen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.05.2015, 09:41     Titel:
  Antworten mit Zitat      
Hallo,

mit patch kannst du Vielecke malen.
Als Ecken wird man wohl die konvexe Hülle der blauen Punkte sowie die Achsengrenzen nehmen müssen. Es kann gut sein, dass du da etwas experimentieren musst.
Ich würde es in dieser Reihenfolge versuchen:
1. contour
2. weiße Patches
3. blaue Linien.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.