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

Fehlermeldung abfangen!

 

nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 18.09.2008, 16:44     Titel:
  Antworten mit Zitat      
Hi,

vielleicht kann man auch den Hex-Specifier mit space padding nehmen (was für ein Satz..). Lad doch mal das Programm samt Daten hoch.
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden


Hampel

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.09.2008, 17:18     Titel:
  Antworten mit Zitat      
Hi, aufgrund der großen Datenmenge (17000 Zeilen: 19 Spalten)
dauert es viel zu lange, bis die Daten angezeigt werden.
Das ist echt zu lang. Wahrscheinlich liegt es an der for Schleife.
Gibt es da noch eine alternative?
Im Anhang befindet sich ein m File. Ihr könnt dieses mal ausprobieren.
Da könnt ihr sehen, das es zu lange dauert.

table1.m
 Beschreibung:

Download
 Dateiname:  table1.m
 Dateigröße:  498 Bytes
 Heruntergeladen:  638 mal
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 18.09.2008, 17:30     Titel:
  Antworten mit Zitat      
Hi,

das Laden der Matrix dauert bei mir mehr als doppelt so lang als das Schreiben in die Listbox. Kannst Du mit
Code:
rauskriegen.
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Hampel

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.09.2008, 20:27     Titel:
  Antworten mit Zitat      
Hi, ich kanns auch nicht verstehen.
Wenn ich alle Daten anzeigen lassen will, dann macht mein Rechnereine lange Zeit nichts mehr. Er hängt dann total lange!
Ganz krass ist es wenn ich nicht nur 3 Spalten habe sonder insgesamt 19 Spalten mit insgesamt 17000 Zeilen. Wie kann man die for Schleife umgehen?
Ich probiere da die ganze Zeit. Hab bisher nichts finden können.
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 18.09.2008, 21:29     Titel:
  Antworten mit Zitat      
Hi,

wie gesagt dauert das Laden der Datei länger als das Anzeigen.
Musst Du die 19 Spalten und 17000 Zeilen auch erst laden?
Macht es denn eigentlich noch Sinn, 17000 Zeilen anzuzeigen, die wird man ja nicht mehr durchscrollen.
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Hampel

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.09.2008, 08:22     Titel:
  Antworten mit Zitat      
Guten Morgen,

also das Problem liegt hier bei dieser Zeile
"set(table,'String',str(1:5000));".
Hier braucht das Programm eine ewig!
Sobald ich diese zeile verwende
"set(table,'String',str(1:end));", macht mein Rechner nach einer gewissen Zeit nix mehr.
Was könnte ich da noch tun???
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 19.09.2008, 08:46     Titel:
  Antworten mit Zitat      
Moin,

leider kann ich, genauso wie nschlange, dein Problem nicht nachvollziehen:
Code:

fig=figure(3);
scrsz = get(0,'ScreenSize');
set(fig,'name','GUI_RE_Daten','NumberTitle','off','Position',[3 scrsz(4)/2-100 scrsz(3)/1.1 scrsz(4)/2]);
table=uicontrol('style','listbox','position',[2 scrsz(4)/2-510 scrsz(3)/1.1 scrsz(4)/2]');

tic;
load matrix;
toc

str=cell(length(matrix_table),1);
tic
for k=1:length(matrix_table)
    str{k}=sprintf('%s   %s   %s' ,matrix_table{k,1}, matrix_table{k,2},matrix_table{k,3});
end
toc
%set(table,'String',str(1:200));
tic;
set(table,'String',str(1:5000)); % komplette Daten anzeigen; dauert zu lange
toc
 


Ergibt bei mir dieses Ergebnis:
Command Window hat Folgendes geschrieben:
Elapsed time is 1.901507 seconds.
Elapsed time is 0.363977 seconds.
Elapsed time is 0.009776 seconds.

Das heißt, dass das Laden der Matrix knapp 2s dauert, das Erstellen des Strings nur knapp eine drittel Sekunde, und die Ausgabe der ersten 5000 Zeilen des Strings dauert bei mir noch nicht einmal eine hundertstel Sekunde...

Was ergibt der Code bei dir?

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Hampel

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.09.2008, 09:14     Titel:
  Antworten mit Zitat      
Hi, die Zeiten liegen auch so in etwa wie bei euch.
Nachdem der letzte Zeitwert in Matlab ausgegeben wird, dauert es noch einwenig bis die Tabelle angezeigt wird.

Im Anhang hab ich jetzt nun eine Matrix die nicht 3 Spalten sondern 18 Spalten besitzt. Da sieht es schon noch anders aus.

matrix2.zip
 Beschreibung:

Download
 Dateiname:  matrix2.zip
 Dateigröße:  596.2 KB
 Heruntergeladen:  602 mal
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 19.09.2008, 09:37     Titel:
  Antworten mit Zitat      
Bei mir dauerts nun auch ne Weile, allerdings wird weiterhin alles angezeigt...

Code:

tic
for k=1:length(matrix_table)
    str{k}=sprintf('%s   %s   %s   %s   %s   %s   %s   %s   %s   %s   %s   %s   %s   %s   %s   %s   %s   %s' ,...
        matrix_table{k,1},matrix_table{k,2},matrix_table{k,3},...
        matrix_table{k,4},matrix_table{k,5},matrix_table{k,6},...
        matrix_table{k,7},matrix_table{k,8},matrix_table{k,9},...
        matrix_table{k,10},matrix_table{k,11},matrix_table{k,12},...
        matrix_table{k,14},matrix_table{k,15},matrix_table{k,15},...
        matrix_table{k,16},matrix_table{k,17},matrix_table{k,18});
end
toc
 

Ergebnis:

Command Window hat Folgendes geschrieben:

Elapsed time is 11.808956 seconds.
Elapsed time is 1.685469 seconds.
Elapsed time is 0.063879 seconds.


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 19.09.2008, 13:11     Titel:
  Antworten mit Zitat      
Hi,

vielleicht kannst Du zwei Knöpfe machen, um jeweils die nächsten 1000 bzw. die vorherigen 1000 Zeilen auszugeben.
Soweit ich weiß kannst Du auf die for-Schleifen zum Zusammenbauen der cell nicht verzichten.
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Hampel

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.09.2008, 13:18     Titel:
  Antworten mit Zitat      
Erstmal Danke für eure Hilfe!

Ich komme doch nochmal auf meinen ersten Beitrag zurück.
Und zwar hab ich geschrieben, das Matlab folgender Fehler ausgibt:

java.lang.out of Memory Error: Java heap space

Wie kann man eigentlich den Speicher für java Anwendungen löschen?
Dies müsste doch gehen oder?
 
Hampel

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.09.2008, 13:37     Titel:
  Antworten mit Zitat      
Ich habe folgendes gefunden:

Code:

MB = 1048576; % megabyte
free_memory = java.lang.Runtime.getRuntime.freeMemory/MB;
total_memory = java.lang.Runtime.getRuntime.totalMemory/MB;
max_memory = java.lang.Runtime.getRuntime.maxMemory/MB;
 


Nun weiss ich allerdings immer noch nicht wie ich in Matlab den Speicher für java wieder freigeben kann.
 
Hampel

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.09.2008, 10:35     Titel:
  Antworten mit Zitat      
Guten Morgen ich hab mich nun doch entschlossen die Daten nicht mit der java Tabelle (uitable) darzustellen. Mit der anderen Variante(siehe Matlabcode unten) hab ich halt dann das Problem, das das ganze zu lange dauert, bis die Tabelle erscheint. Ich weiss da einfach nicht mehr weiter.
Gibt es da eine andere alternative?

Code:

fig=figure(3);
scrsz = get(0,'ScreenSize');
set(fig,'name','GUI_RE_Daten','NumberTitle','off','Position',[3 scrsz(4)/2-100 scrsz(3)/1.1 scrsz(4)/2]);
table=uicontrol('style','listbox','position',[2 scrsz(4)/2-510 scrsz(3)/1.1 scrsz(4)/2]');

tic;
load matrix;
toc

str=cell(length(matrix_table),1);
tic
for k=1:length(matrix_table)
    str{k}=sprintf('%s   %s   %s' ,matrix_table{k,1}, matrix_table{k,2},matrix_table{k,3});
end
toc
%set(table,'String',str(1:200));
tic;
set(table,'String',str(1:5000)); % komplette Daten anzeigen; dauert zu lange
toc
 
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 22.09.2008, 10:43     Titel:
  Antworten mit Zitat      
Moin,

ich greife nochmal die Frage nach dem Sinn der ganzen auf...

Ansonsten wäre die Möglichkeit von nschlange
nschlange hat Folgendes geschrieben:
vielleicht kannst Du zwei Knöpfe machen, um jeweils die nächsten 1000 bzw. die vorherigen 1000 Zeilen auszugeben.
eine Alternative.

Das Hauptproblem (zeitlich gesehen) liegt meines Erachtens allerdings nicht in der Ausgabe, sondern vielmehr beim Laden des mat-files.

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 22.09.2008, 10:48     Titel:
  Antworten mit Zitat      
Hi,

zu dem Java-Speicher-Problem hab ich das hier gefunden:
http://www.mathworks.com/support/solutions/data/1-18I2C.html
Vielleicht hilft es ja.

Ansonsten wie gesagt die Daten portionsweise anzeigen lassen.
Aber wie auch gesagt dauert das Laden der Daten viel länge.

5 min... Wink
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.