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

"Close all"-Befehl nach Pause

 

Niko9310
Forum-Anfänger

Forum-Anfänger


Beiträge: 49
Anmeldedatum: 02.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.01.2015, 12:44     Titel: "Close all"-Befehl nach Pause
  Antworten mit Zitat      
Hallo,

ich versuche einen Bohrerquerschnitt zu extrudieren und habe folgendes Programm mit Matlab geschrieben:


Code:
clear all; close all; clc;

format long
punkte=load('GUE_88_Schnitt_2.txt'); %Lade Punkte aus txt-Datei
punkte_temp=punkte; %Datei umbenennen

punkte_sort(1,: )=punkte(1,: );
bezugspunkt=punkte(1,: );
punkte_temp(1,: )=[];

fid=fopen('GUE_88_Schnitt_2.txt', 'wt');
fprintf(fid, [num2str(punkte_sort(1,: )), '\n']);

%Sortieren der Punkte in einen Bohrerquerschnitt
for i=2:length(punkte(:,1));
    for j=1:length(punkte_temp(:,1));
        abstand(j)=sqrt((punkte_temp(j,1)-bezugspunkt(1))^2+(punkte_temp(j,2)-bezugspunkt(2))^2);
    end
    if min(abstand)>0.0005
        break
    end
    stelle=find(abstand==min(abstand),1);
    punkte_sort(i,: )=punkte_temp(stelle,: );
    bezugspunkt=punkte_temp(stelle,: );
    punkte_temp(stelle,: )=[];
    clear abstand
    fprintf(fid, [num2str(punkte_sort(i,: )), '\n']);
    i
end
fclose(fid);  

plot(punkte_sort(:,1), punkte_sort(:,2),'-'); %Bohrerquerschnitt darstellen

pause(5); %für 5 Sekunden pausieren

close all; %alle Plots schließen

%Definiere alle wichtigen Parameter

ebenenabstand = 10; %Abstand der Ebenen zueinander
dralllaenge = 3; %Länge für eine volle Umdrehung dees Ausgangspolygons
laenge = 50 %Länge des Bohrers

beta = 2*pi*(ebenenabstand/dralllaenge);
planes = round(laenge/ebenenabstand);
ebenenabstand_neu = laenge/planes;
A = [cos(beta) -sin(beta); sin(beta) cos(beta)];

%Bohrer extrudieren
punktwolke=punkte;
punktwolke(:,3)=0;

for timer=1:planes
punkte=punkte*A
punkte_t=punkte;
punkte_t(:,3)=ebenenabstand_neu*timer;
punktwolke=[punktwolke;punkte_t];
end

plot3(punktwolke(:,1),punktwolke(:,2),punktwolke(:,3),'.'); %3D-Plot darstellen

pause(5); %5 Sekunden pausieren

close all; %alle Plots schließen

 



Es werden Punkte aus einer Datei ausgelesen, diese dann sortiert und zunächst geplottet. Nun werden Querschnitte verdreht und in die dritte Dimension extrudiert und dann wiederum dargestellt.

Ich habe eine Frage bezüglich dem "close all" Befehl nach der ersten Pause! Zuvor wird der Querschnitt geplottet und sollte dann aber eigentlich nach dem Anhalten und Pausieren wieder geschlossen werden, aber dies geschieht nicht! Ich frage mich, wie dies erreichtwerden kann. Kann mir dabei einre helfen??

Mit freundlichen Grüßen

Niko9310

[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 22.01.2015, 13:41     Titel:
  Antworten mit Zitat      
Ein Bug in dieser Richtung ist mir nicht bekannt, aber "close figure" und ähnliche hier relevante Suchstrings sind denkbar schlecht, weil sie andauernd vorkommen. Release und Betriebssystem sind relevant zu wissen.

close all schliesst all figure wenn deren Handle bekannt ist. Ich sehe diesbezüglich nichts Verdächtiges im Code. Bitte mal folgenden Code testen:

Code:


Wie verhält sich denn der?

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 22.01.2015, 13:45     Titel:
  Antworten mit Zitat      
Wird drawnow nicht implizit durch die Verwendung von pause ausgeführt, Andreas?

Ich würde vorschlagen die plots in eine bereits vorher festgelegte Figure zu speichern und dann direkt diese zu schließen.

Code:
figure(111)
plot(punkte_sort(:,1), punkte_sort(:,2),'-'); %Bohrerquerschnitt darstellen
pause(5)
close 111
 

_________________

>> why
The computer did it.
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 22.01.2015, 14:05     Titel:
  Antworten mit Zitat      
Bei meinem Test ohne DRAWNOW hat es ein paar Sekunden gedauert bis die Figures erschienen. Die blitzten kurz auf uns waren dann "geclosed". Ergo habe ich DRAWNOW dazu gebaut, weil es geht mir ja darum einen möglichen Bug mit CLOSE zu finden.

Das schliessen mit den spezifischen Handles sollte natürlich genau so gehen, aber wie gesagt, ich bin ja nich nur motiviert den Anwendern zu helfen, sondern bin auch ein Bug-Hunter Wink

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Niko9310
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 49
Anmeldedatum: 02.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2015, 15:33     Titel:
  Antworten mit Zitat      
Hallo,

ich arbeite mit Matlab R2013a und das auf Windows 7!

Habe mich zunächst an Maddy gehalten und ihren Vorschlag ausprobiert. Leider hat das nicht geklappt! Sad

Werde gleich nochmal Andreas Vorschlag versuchen!

Bis dann und Danke für die Hilfe! Wink

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