Matlab Tabulatoren/Tabelle

Tummelplatz für Computernutzer im allgemeinen und ihrer vielfältigen Probleme

Moderator: (M) Mod.-Team Allgemein

Antworten
selma89
TalkING. Fan
TalkING. Fan
Beiträge: 32
Registriert: Di, 18. Okt. 11, 09:36

Matlab Tabulatoren/Tabelle

Beitrag von selma89 » So, 30. Jun. 13, 11:21

Moin!

Ich programmiere grade ein kleines Spiel mit Matlab. Dafür habe ich ein Cell-Array namen, in dem die einzelnen Spielernamen abgespeichert sind und einen Vektor punkte, in dem die einzelnen Punktestände abgespeichert sind. Jetzt möchte ich nach jeder Runde übersichtlich den Spielstand anzeigen, also eine Art Tabelle, in der man die Namen und daneben die entsprechenden Punkte anzeigt. Bisher habe ich das so gelöst:

fprintf('Name\t|\tPunkte\n');
fprintf('------------------\n');
for n = 1:1:anzahlspieler

fprintf('%s\t|\t%g\n',namen{1,n},punkte(n));
end

Das klappt bei normalen Namen auch ganz gut. Wenn jetzt aber ein etwas längerer und ein etwas kürzerer Name dabei ist, zb Christian oder Jan, dann hauen die Tabulatoren nicht mehr hin und die Trennstriche, also die |, sind alle auf einer anderen Position und das ganze sieht nicht mehr wirklich nach einer Tabelle aus.

Weiß jemand wie ich die Tabulatoren richtig setzen kann, damit alles in Reih und Glied ist? Habe schon länger rumgespielt, aber leider ohne Erfolg.

Alternativ bin ich auch für weitere Funktionen oder Befehle offen, die mir eine schöne Tabelle ins Command Window zaubern. :)

Vielen Dank im Voraus!

Benutzeravatar
Illmatic
TalkING. Freak
TalkING. Freak
Beiträge: 204
Registriert: Mo, 06. Sep. 10, 17:30

Beitrag von Illmatic » So, 30. Jun. 13, 11:46

Hi selma,
ich habe etwas ähnliches mal in Matlab gemacht. Das ganze sah ungefähr so aus:

Code: Alles auswählen

f = figure('Position',[200 200 700 150]);
grid off;
axis off;
dat = [10,12,4];
cnames = {'Funktionsauswertungen','Erfolgreiche Schritte','Nicht erfolgreiche Schritte'};
t = uitable('Parent',f,'Data',dat,'ColumnName',cnames,'Position',[20 20 500 100]);
Musst du dann noch ein bisschen rumspielen denke ich.
Viele Grüße,
Axel

Benutzeravatar
slmndr
TalkING. Superposter
TalkING. Superposter
Beiträge: 312
Registriert: Do, 03. Mär. 11, 18:56

Beitrag von slmndr » So, 30. Jun. 13, 11:51

Moin,

da MATLAB die meisten C-Funktionen übernommen hat, würde ich folgendes verwenden:

%+10.10s

also

fprintf('%+10.10s|\t%g\n',namen{1,n},punkte(n));
mind. 10 Zeichen, max. 10 Zeichen -> Einheitliche länge. Der Rest wird mit Leerzeichen aufgefüllt. Das + richtet nach rechts aus, ein - richtet nach links aus.

Ich habe außerdem mal eine Funktion geschrieben, die von MATLAB zu einer LaTeX-Tabelle übersetzt, falls du da interesse dran hast.

selma89
TalkING. Fan
TalkING. Fan
Beiträge: 32
Registriert: Di, 18. Okt. 11, 09:36

Danke!

Beitrag von selma89 » Di, 02. Jul. 13, 13:31

Der Tipp mit %10.10s hat wunderbar funktioniert.
Vielen Dank!

Antworten