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

UITABLE Formattierung Data

 

Slamdunker23
Forum-Century

Forum-Century


Beiträge: 101
Anmeldedatum: 03.11.09
Wohnort: Stuttgart
Version: R2012b
     Beitrag Verfasst am: 27.02.2013, 08:53     Titel: UITABLE Formattierung Data
  Antworten mit Zitat      
Guten Morgen zusammen!
Ich stehe immer noch vor ein paar Herausforderungen mit der Funktion UITABLE, da ich mir meistens nicht sicher bin, ob Matlab meine Anforderung umsetzen kann oder ob ich auf HTML zurückgreifen muss.

Ich stelle euch mal kurz mein Problem vor:

Code:

table1 = uitable('Parent',Summary_Report_Figure,'Data',Summary_Report_Data123,'ColumnName',column_names1,'RowName',row_names1);
 


Mit diesem Code füge ich die UITABLE ein.
Die Daten (alles Zahlen), die ich anzeigen will, befinden sich in einer Matrix Summary_Report_Data123. Die Größe der Zahlen gehen von 0.1 bis 1000. Matlab formatiert diese in Zahlen XXX.YYYY, also mit 4 Nachkommastellen.
Bei längeren Zahlen werden diese in der Exponentialdarstellung e+01 (beispielsweise) dargestellt.

Mein Wunsch ist, dass alle Zahlen in der Data-Matrix gleich formatiert sind.
Normalerweise kann ich das Ausgabeformat mit
Code:
ändern, aber das ändert nicht das Anzeigeformat in der uitable.

Wie kann ich das ändern?

Vielen Dank für eure Hilfe.

Herzlicher Gruß, Daniel
Private Nachricht senden Benutzer-Profile anzeigen


Slamdunker23
Themenstarter

Forum-Century

Forum-Century


Beiträge: 101
Anmeldedatum: 03.11.09
Wohnort: Stuttgart
Version: R2012b
     Beitrag Verfasst am: 27.02.2013, 08:55     Titel:
  Antworten mit Zitat      
Sorry, das habe ich vergessen:

Alle Zahlen sollen (egal wieviele stellen sie VOR dem Komma/Punkt haben) mit nur zwei Nachkommestellen angezeigt werden.

Danke euch Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Slamdunker23
Themenstarter

Forum-Century

Forum-Century


Beiträge: 101
Anmeldedatum: 03.11.09
Wohnort: Stuttgart
Version: R2012b
     Beitrag Verfasst am: 06.03.2013, 07:49     Titel:
  Antworten mit Zitat      
Kennt jemand diese Lösung?

Vielen Dank!
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: 06.03.2013, 09:31     Titel:
  Antworten mit Zitat      
Hallo Slamdunker23,

Man kann die Zahlen per SPRINTF in ein Cell-String konvertieren. Mit dem '%8.2f' Format-String erhält man 2 Nachkommastellen.

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

Forum-Century

Forum-Century


Beiträge: 101
Anmeldedatum: 03.11.09
Wohnort: Stuttgart
Version: R2012b
     Beitrag Verfasst am: 06.03.2013, 15:52     Titel:
  Antworten mit Zitat      
Hallo Jan.

Ich habe folgende Matrix mit der Größe 2x4:
Code:

A = [0, 1000.123465 20 0.0113; 58, 5698.45687 45.123 0];
 


Den Inhalt möchte ich formatieren auf max. zwei Nachkommastellen.

Mit
Code:

 string = sprintf('%8.2f',A);
 


erhalte ich einen String mit den gerundeten Zahlen. Perfekt!

Doch ich will ein Cell Array, die die gleiche Größe (2x4) hat, mit den gerundeten Werten.

Muss ich jetzt den String in ein Array wandeln oder kann ich die Funktion sprintf anpassen, um sofort das Cell Array mit der Größe (2x4, wie der Input) zu bekommen?

Vielen Dank!

Herzlicher Gruß, Daniel
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: 06.03.2013, 17:17     Titel:
  Antworten mit Zitat      
Hallo Slamdunker23,

Code:
A = [0, 1000.123465 20 0.0113; 58, 5698.45687 45.123 0];
C = cell(size(A));
for iC = 1:numel(A)
  C{iC} = sprintf('%8.2f', A(iC));
end

Oder:
Code:
S = sprintf('%8.2f*', A);
C = regexp(S, '*', 'split');
C = resize(C, size(A));  % MIGHT FAIL!!!

Ich weiß nicht, wie REGEXP mit dem letzten * umgeht. Eventuell muss man den löschen bevor man den String in einen Cell String splittet.

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

Forum-Century

Forum-Century


Beiträge: 101
Anmeldedatum: 03.11.09
Wohnort: Stuttgart
Version: R2012b
     Beitrag Verfasst am: 07.03.2013, 10:09     Titel:
  Antworten mit Zitat      
Hallo Jan.
Vielen Dank. Ich habe den ersten Vorschlag genommen und es passt wunderbar.

Jetzt stehe ich noch vor einem kleinen Problem, über das wir in einem anderen Thread schonmal diskutiert haben.

Code:

A = [0, 1000.123465 20 0.0113; 58, 5698.45687 45.123 0];
C = cell(size(A));
for iC = 1:numel(A)
  C{iC} = sprintf('%8.2f', A(iC));
end

column_name = {'A','B','C','D'};
row_name = {'1';'2'};
figure;
table1 = uitable('Data',C,'ColumnName',column_name,'RowName',row_name);
 


Es geht dabei, wie ich die Outputdaten nun zentriert in der Tabelle anzeigen lassen kann.
In der uitable werden Strings immer links bündig angezeigt.

Wie muss ich folgenden Befehl:
Code:

table1 = uitable('Data',C,'ColumnName',column_name,'RowName',row_name);
 

ändern, damit die Daten zentriert angezeigt werden?

Vielen Dank!
Herzlicher Gruß, Daniel
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 - 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.