formatierte Ausgabe von syms < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Hallo,
ich möchte gerne eine Matrix, die unter anderem syms als Argumente von trigonometrischen Funktionen enthält formatiert ausgeben in der Art, dass man sie direkt in den Openoffice Formeleditor copy&pasten kann
das in Openoffice verwendete Format hierfür ist:
matrix{
zeile1wert1 # zeile1wert2 # ... # zeile1wertn ##
zeile2wert1 # zeile2wert2 # ... # zeile2wertn ##
...
zeilemwert1 # zeilemwert2 # ... # zeilemwertn
}
Also umschliessendes "matrix{}" mit '#' getrennten Werten und '##' als Zeilenende außer in der letzten Zeile. Mein Ziel ist es, dass das dann auch so aussieht wie oben gezeigt, damit man das in OpenOffice gegebenfalls leicht nacheditieren kann (Ausgabe in einer Zeile wäre dafür beispielsweise sehr ungeeignet).
Bisher funktioniert das soweit, dass es zwar alles korrekt ausgegeben wird, aber leider viel zu unübersichtlich und mit zu vielen Leerzeilen, die vom disp()-Befehl erstellt werden (welches der einzige Ausgabebefehl ist, den ich zur Ausgabe von syms "überreden" konnte).
Kann mir jemand sagen, ob und ggf. wie es möglich ist die Ausgabe wie beschrieben zu formatieren?
Mein bisheriges m-file sieht folgendermaßen aus(wobei die Funktionsparameter theta, alpha, l und d je nach Fall syms oder echte Werte sein können):
function [ ] = A_Matrix( theta, alpha, l, d )
matrix = [
cos(theta), -sin(theta)*cos(alpha), sin(theta)*sin(alpha), l*cos(theta);
sin(theta), cos(theta)*cos(alpha), -cos(theta)*sin(alpha), l*sin(theta);
0, sin(alpha), cos(alpha), d;
0, 0, 0, 1
];
disp('left ( matrix {')
disp(matrix(1,1))
for zeile = 1:4
for spalte = 1:4
if spalte == 4
if zeile ~=4
disp(matrix(zeile, spalte));
disp(' ##')
end
else
disp(matrix(zeile, spalte));
disp(' #')
end
end
end
disp('} right )')
|
|
|
|
Hallo,
ich würde es folgendermaßen machen:
Je nach Betriebssystem definieren wir zuerst:
umbruch = 10; %unter Linux
bzw.
umbruch = [10 13]; %unter Windows
Dann kommt folgender Code (am besten wie bei dir in einer Funktion, dann evtl. auch mit umbruch als Parameter):
res = ['matrix{' umbruch];
for zeile=1:size(matrix,1),
for spalte=1:size(matrix,2),
res = [res char(matrix(zeile,spalte)) ' # '];
end;
res = [res(1:end-1) '#' umbruch];
end;
res = [res(1:end-3) umbruch '}'];
Das Vorgehen entspricht eigentlich deiner Strategie, nur eben auf anderem Wege.
Gruß
Martin
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:09 Mi 20.12.2006 | Autor: | delirium83 |
Super, funktioniert genau wie gedacht!
|
|
|
|