Vektor zu Matrix < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 00:49 So 15.10.2006 | Autor: | Kathrin |
Hallo liebe Freunde ;
ich habe mit Matlab vor, eine 3D Plot zeichnung zu machen, und habe einen Vektor, der 2376 lang ist ,,, ich möchte aus diesem Vektor ein Matrix bilden, das 66 spalten und 36 zeilen hat. ich weiss aber nicht wie oder was ich eingeben soll. ich habe auch nichts in denMatlab-Bücher gefunden.
Kann jemand mir helfen
Danke.
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 09:08 So 15.10.2006 | Autor: | ullim |
Hi Kathrin,
ich habe Matlab 6.5 benutzt.
Das Programm liegt bei.
-----------------------------------------------
N=6; % Anzahl Spalten
M=3; % Anzahl Zeilen
% Befüllen eines Testvektors x
for i=1:N*M
x(i)=i;
end
% Ausgabe von x
x'
% Umsortieren des Vektor x in eine Matrix
for i=1:M
for j=1:N
A(i,j)=x((i-1)*N+j);
end
end
% Testausgabe von A
A
-----------------------------------------------
Für N und M kannst Du dann Deine Zahlen einsetzen.
mfg ullim
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 10:10 Di 17.10.2006 | Autor: | Kathrin |
Guten tag zusammen,
die Antwort auf meine Frage hat mir geholfen,,,,Danke
nun ich habe von diesem vektor noch 29 Stücke, die müssen alle in Matrizen 36 mal 66 umgewandelt weden und in 3D gezeichnet.. diese Vektoren liegen bei mir in Excel.... wie kann ich ein M-file schreiben , so dass ich nicht jedes mal die Vektoren mit Matlab importiere und in Matrix umwandele und erst dann zeichnen
Falls jemand die Excel-Datei sich anschauen will, kann ich ihm schicken
schöne Grüsse
Dateianhänge: Anhang Nr. 1 (Typ: xls) [nicht öffentlich]
|
|
|
|
|
Status: |
(Antwort) fehlerhaft | Datum: | 20:58 Di 17.10.2006 | Autor: | ullim |
Hi Kathrin,
versuchsmal mit folgendem Programm
----------------------------------------------------------------------
N=6; % Anzahl Spalten der resultierenden Matrix
M=3; % Anzahl Zeilen der resultierenden Matrix
J=5; % Anzahl Spalten der Ausgangsdatenmatrix
clc
% Befüllen einer Testmatrix x
for i=1:N*M
for j=1:J
x(i,j)=N*M*(j-1)+i;
end
end
% Ausgabe von x
x
% Umsortieren des Vektor x in eine Matrix
for j=1:J
for m=1:M
for n=1:N
A(m,n,j)=x((m-1)*N+n,j);
end
end
end
% Testausgabe von A
A
----------------------------------------------------------------------
Es erzeugt folgende Ausgabe
x =
1 19 37 55 73
2 20 38 56 74
3 21 39 57 75
4 22 40 58 76
5 23 41 59 77
6 24 42 60 78
7 25 43 61 79
8 26 44 62 80
9 27 45 63 81
10 28 46 64 82
11 29 47 65 83
12 30 48 66 84
13 31 49 67 85
14 32 50 68 86
15 33 51 69 87
16 34 52 70 88
17 35 53 71 89
18 36 54 72 90
A(:,:,1) =
1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
A(:,:,2) =
19 20 21 22 23 24
25 26 27 28 29 30
31 32 33 34 35 36
A(:,:,3) =
37 38 39 40 41 42
43 44 45 46 47 48
49 50 51 52 53 54
A(:,:,4) =
55 56 57 58 59 60
61 62 63 64 65 66
67 68 69 70 71 72
A(:,:,5) =
73 74 75 76 77 78
79 80 81 82 83 84
85 86 87 88 89 90
Nun musst Du nur noch das Excel File nach matlab einlesen.
mfg ullim
|
|
|
|
|
Status: |
(Korrektur) Korrekturmitteilung | Datum: | 09:46 Mi 18.10.2006 | Autor: | Kathrin |
Hallo
Deine Antwort ist gar nicht mal Falsch, lässt sich auf meine Excel Datei nicht anwenden.ich bekomme die folgende Meldung:
??? zeichnenaller daten:( so heisst mein M-Feil)
|
Error: Missing operator, comma, or semicolon.
MfG
|
|
|
|
|
Status: |
(Korrektur) Korrekturmitteilung | Datum: | 22:16 Mi 18.10.2006 | Autor: | ullim |
Hi Kathrin,
in meinem Programm habe ich ja die Eingangswerte simuliert, Du muss sie aus dem Excel File oder aus einem CSV (Comma Separierten Value) File lesen. In Excel kannst Du angeben wie die Datei konvertiert werden soll. Wenn Du das File eingelesen hast, muss Du die Werte entsprechend meinem Programm in eine Matrix füllen, dann sollte es klappen.
mfg ullim
|
|
|
|
|
Status: |
(Korrektur) Korrekturmitteilung | Datum: | 19:33 Do 19.10.2006 | Autor: | Kathrin |
Hallo Ulm
wie kommt das ?????? wenn ich ein M-File koppiere, und ihm einen anderen Namen gebe( statt Hallo.m einfach gruesse.m),,,,das ich die neue M-file nicht mehr ausführen kann...... ich kann nur der erste ausführen.
sehr merkwürdig,,,, weist du vielleicht warum
MfG
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 20:06 Do 19.10.2006 | Autor: | ullim |
Hi Katrin,
bei mir ist das nicht so. Ich habe ein M-File kopiert und umbenannt. Und dieses neue M_File kann ich auch ausführen. Tut mir leid, den Fehler kann ich nicht nachvollziehen.
mfg ullim
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:44 Sa 21.10.2006 | Autor: | ullim |
Hi Katrin,
ich habe das Programm noch so verändert, das das Excelfile direkt ausgelesen wird. Die NaN Werte kann man noch eliminieren.
Ich habe folgende Testdaten verwendet
Datei-Anhang
<< -----
clc
clear
N=6; % Anzahl Spalten der resultierenden Matrix
M=3; % Anzahl Zeilen der resultierenden Matrix
[Werte, Namen] = xlsread('Testexcel1.xls'); %Einlesen der Exceldatei
% Ausgabe von Werte
Werte
J = size(Werte,2); % Anzahl der Spalten der Eingangsmatrix
% Umsortieren der Matrix Werte in die Matrix A
for j=1:J;
for m=1:M;
for n=1:N;
A(m,n,j)=Werte((m-1)*N+n,j);
end
end
end
% Testausgabe von A
A
----- >>
Werte =
NaN 65 -80 598860511 596832200 594812518 592801523 590799450
NaN 65 -80 598860511 596832200 594812518 592801523 590799450
NaN 65 -80 598860511 596832200 594812518 592801523 590799450
NaN 65 -80 598860511 596832200 594812518 592801523 590799450
NaN 65 -80 598860511 596832200 594812518 592801523 590799450
NaN 65 -80 598860511 596832200 594812518 592801523 590799450
NaN 65 -80 598860511 596832200 594812518 592801523 590799450
NaN 65 -80 598860511 596832200 594812518 592801523 590799450
NaN 65 -80 598860511 596832200 594812518 592801523 590799450
NaN 65 -80 598860511 596832200 594812518 592801523 590799450
NaN 65 -80 598860511 596832200 594812518 592801523 590799450
NaN 65 -80 598860511 596832200 594812518 592801523 590799450
NaN 65 -80 598860511 596832200 594812518 592801523 590799450
NaN 65 -80 598860511 596832200 594812518 592801523 590799450
NaN 65 -80 598860511 596832200 594812518 592801523 590799450
NaN 65 -80 598860511 596832200 594812518 592801523 590799450
NaN 65 -80 598860511 596832200 594812518 592801523 590799450
NaN 65 -80 598860511 596832200 594812518 592801523 590799450
A(:,:,1) =
NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN
A(:,:,2) =
65 65 65 65 65 65
65 65 65 65 65 65
65 65 65 65 65 65
A(:,:,3) =
-80 -80 -80 -80 -80 -80
-80 -80 -80 -80 -80 -80
-80 -80 -80 -80 -80 -80
A(:,:,4) =
598860511 598860511 598860511 598860511 598860511 598860511
598860511 598860511 598860511 598860511 598860511 598860511
598860511 598860511 598860511 598860511 598860511 598860511
A(:,:,5) =
596832200 596832200 596832200 596832200 596832200 596832200
596832200 596832200 596832200 596832200 596832200 596832200
596832200 596832200 596832200 596832200 596832200 596832200
A(:,:,6) =
594812518 594812518 594812518 594812518 594812518 594812518
594812518 594812518 594812518 594812518 594812518 594812518
594812518 594812518 594812518 594812518 594812518 594812518
A(:,:,7) =
592801523 592801523 592801523 592801523 592801523 592801523
592801523 592801523 592801523 592801523 592801523 592801523
592801523 592801523 592801523 592801523 592801523 592801523
A(:,:,8) =
590799450 590799450 590799450 590799450 590799450 590799450
590799450 590799450 590799450 590799450 590799450 590799450
590799450 590799450 590799450 590799450 590799450 590799450
mfg ullim
Dateianhänge: Anhang Nr. 1 (Typ: xls) [nicht öffentlich] Anhang Nr. 2 (Typ: xls) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 19:08 Fr 27.10.2006 | Autor: | Kathrin |
hallo Ulm,
Oh.....mein lieber gott, ich führe eigentlich nur die Schritte , die du machst und nicht anderes.............es musste bei mir auch wie bei dir auch laufen .
kann es sein , das weil die zeilen-Anzahl 2376 und spalten-Anzahl 29 bei mir ist. und mein matrix 68904 elemente hat,,
bitte versuch ,dass für die matrix, die ich im Netz habe , auch,
und sag mir bescheid...
kann es sein , das mein Matlab faul ist ????
ich werde wahrsinnig
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 23:23 Fr 27.10.2006 | Autor: | ullim |
Hi kathrin,
ich habe es mit Deinen Daten probiert, s. Anhang, bei mir gehts gut. Meld Dich wenn was schief gegangen ist.
Datei-Anhang
Datei-Anhang
mfg ullim
Dateianhänge: Anhang Nr. 1 (Typ: m) [nicht öffentlich] Anhang Nr. 2 (Typ: xls) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 10:52 Di 31.10.2006 | Autor: | Kathrin |
Hallo Ulm ,
nach länger rumprobiererei hat es funktioniert, aber nicht als M-File ,was man ausführen kann ,,,,,,,sonderen ich musste dein Program komplet in die "Command window" eingeben und erst dann , konnte mein matlab mir das Ergebniss berechnen ................es muss als M-file auch gehen ??? na ya.
sag mal: es sind bei mir jetzt 29 Fläschen , die ich plotten kann, die einzeln zu plotten ist kein problem. gibt es die Möglichkeit ,sie alle in einem Bild zu plotten........ich habe mir überlegt eine for schleife ZU benutzen, und habe es so gemacht:
for h=:29
surf(a,b,A(:,:,h);
figure (h);
end
er plottet die alle, tut die nicht in einem Bild sondern in 29 Bilder
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:10 Di 31.10.2006 | Autor: | ullim |
Hi kathrin,
das Du 29 Bilder bekommst, kommt durch den Befehl figure(h), weil hier ja h hochgezählt wird. Ich weiss aber auch nicht, wie man alles in ein Bild bekommt.
Aber als m-File sollte das Programm schon laufen, jedenfalls bei mir. Ich habe Matlab 6.5.
mfg ullim.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:42 Mi 01.11.2006 | Autor: | habanero |
Hallo,
probier einfach mal das hier: wenn du für weitere Ausgaben weitere Fenster brauchst, inkrementierst du einfach windowhandler und setzt das Fenster aktiv
windowhandler=0; % Startinitialisierung
windowhandler=windowhandler+1;
figure(windowhandler);hold on;
for h=:29
surf(a,b,A(:,:,h);
end
hold off;
Grüße Thomas
|
|
|
|