|
|
Matrix zu einzelnen Vektoren |
|
adem89 |

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 24.03.16
|
 |
|
 |
Wohnort: Mannheim
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.03.2016, 22:42
Titel: Matrix zu einzelnen Vektoren
|
 |
Servus, bin neu hier, habe auch viele viele Seite gelesen, nur bin nicht richtig fündig geworden.
Ich versuche für eine Übungsaufgabe ausm Buch für Matlab umzuwandeln und zwar:
Matrix A mit den Werten:[1,2,3;4,5,6;,7,8,9];
Jetzt will ich die erste Zeile (1,2,3) in einen Vektor speichern und die 2. und die 3.te eben so.
Habe mit magic eine Matrix mit 10x10 erstellt und habe es damit auch versucht, nur leider ohne erfolg.
Mein Ansatz war bisher:
vektor1=squeeze(A(1,: )) -> damit gehts, aber ich würde nicht gerne vektor1 2 3 ... schreiben, sondern es mit einer forschleife machen lassen.
zB.
A=Matrix
for k = 1:3
vektoren(k)=squeeze(A(k,: ))
end
bekomme aber immer als Fehler:
Subscripted assignment dimension mismatch.
Edit: habe jetzt zum Teil etwas gefunden:
>> for k = 1:3
assignin('caller',['V', num2str(k)],A(k))
end
der speichert mit das unter V1 V2 etc ab, aber nur die ersten Zahlen.
Gruß
|
|
|
|
|
Winkow |

Moderator
|
 |
Beiträge: 3.842
|
 |
|
 |
Anmeldedatum: 04.11.11
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2014a 2015a
|
 |
|
|
 |
|
Verfasst am: 25.03.2016, 02:38
Titel:
|
 |
die fehlermeldung ist recht eindeutig. deine dimmensionen passen nicht.
du versuchst einem element aus vektoren mehrere elemnte der matrix A zuzuweisen. das passt natürlich nicht.
cells könnten hier hilfreich sein. der sinn der ganzen sache ist natürlich fragwürdig da die daten die du haben willst schon in A enthalten sind und eine verteilung dieser daten auf neue variablen keinen informationsgewinn bringen.
_________________
richtig Fragen
|
|
|
adem89 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 24.03.16
|
 |
|
 |
Wohnort: Mannheim
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.03.2016, 12:49
Titel:
|
 |
|
 |
|
Danke für die Antwort. Das mit den dimensionen habe ich nicht betrachtet.
ich schreibe mal einen beispiel hierher:
Matrix A sei:
1 0 2 1 0 2 1 0 2 1 2
2 1 2 1 1 1 1 1 2 2 2
3 2 1 2 1 0 0 0 1 1 2
1 1 1 1 1 1 0 0 1 2 2
Jetzt will ich die erste Zeile komlett in einen Vektor namens vektor1 speichern.
Die zweite Zeile in vektor2 usw. Die Namensgebung kann auch anders sein. Spielt hier keine große Rolle.
Ich möchte danach die Zahlen aus allen Vektoren einzel betrachten, dass heißt, ich möchte zB die 1er aus vektor2 herauslesen (sind 6 stück) und die dann als "Anwesend = 6" herausgeben.
Die Zahl 0 wäre "nicht da", Zahl 2 "entschuldigt" und Zahl 3 "Urlaub".
Die 0 1 2 3 entnehme ich aus meiner Exceltabelle. Und die erste Zeile ist zB Frank, dann Robin, Andreas, Jens, Robert, Egon etc.
Wahrscheinlich geht das alles viel viel einfacher, nur finde ich nicht heraus, wie ich es am besten lösen kann.
Die Excel dateil habe ich schon eingelesen, aber mehr geht auch nicht.
Habe es mit folgenden versucht:
squeeze(A(1,: ))
unique(A(1,: ))
A(1:1:end,: )
Nur bekomme ich die alle nicht in eine Forschleife, damit ich die Vektoren erstellen kann.
Ich möchte jetzt nicht für jeden einen Vektor selber erstellen ( in meinem Beispiel wäre dass ja nicht allsodramatisch, weil es ja 20 Namen sind).
Gruß
|
|
|
BBecks |

Forum-Anfänger
|
 |
Beiträge: 14
|
 |
|
 |
Anmeldedatum: 26.03.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.03.2016, 14:00
Titel:
|
 |
Hi adem,
ich habe ein wenig das Gefühl, dass du an einem Zwischenschritt hängst, der nicht nötig ist. Da wie Winkow schon sagte, kein Informationsgewinn gegeben ist.
Was hast du denn im Anschluss mit deinen einzelnen Vektoren vor?
Beste Grüße
BBecks
|
|
|
adem89 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 24.03.16
|
 |
|
 |
Wohnort: Mannheim
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.03.2016, 17:29
Titel:
|
 |
|
 |
|
Hi, ich möchte zB aus der Matrix hier:
1 1 1 1 1 2 0 2 1 0 1 2 2 0 1 1 1 1
1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1
1 1 1 1 1 1 1 1 1 0 2 1 1 0 1 0 1 1
1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 2 1
1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 2
1 1 1 1 1 1 0 1 1 0 1 0 1 0 1 1 1 1
1 0 1 1 1 1 0 1 1 0 1 1 2 0 1 0 0 1
1 1 1 1 1 1 0 1 1 0 1 1 1 0 1 1 1 1
1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1
1 1 1 1 1 1 0 1 1 0 1 1 1 0 1 1 1 1
Zeile für Zeile die Zahlen untersuchen.
Zum Beispiel die Zahl 0.
Wie oft kommt die Zahl "0" in der ersten Zeile vor? - Antwort: 3
Wie oft kommt die Zahl "0" in der dritten Zeile vor? - ....
Und das Selbe mit den Zahlen 1 und 2 auch.
Wenn ich nur nach der Zahl x suche, dann bekomme ich alle ausm Matrix und genau das möchte ich nicht. Möchte es Zeile für Zeile untersuchen und die Werte dann in Variablen speichern.
Erste Gedanke war von mir, alle Zeilen als Vektoren zu speichern und die Vektoren zu untersuchen - scheint aber irgendwie nicht zu funktionieren (ich habs nicht hingebekommen).
Jetzt ist die Idee: einfach Zeile 1 nach der Zahl x zu durchsuchen und in ein Variable die Summe davon zu speichern.
Einzeln kann ich das ja machen, indem ich:
erg = A(1,: ) [schreibe alles aus der ersten Zeile in den Vektor erg]
ergmit1=erg(erg==1) [Suche die 1er]
ergmit1sum=sum(ergmit1) [bilde die Summe]
sind bestimmt zu viele schritte, aber ich würde es dann noch gerne in eine Forschleife einbauen, damit ich es Zeile für Zeile abspielen kann.
Gruß
|
|
|
BBecks |

Forum-Anfänger
|
 |
Beiträge: 14
|
 |
|
 |
Anmeldedatum: 26.03.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.03.2016, 18:24
Titel:
|
 |
Sorry ich muss gleich weg, von daher hier eine kurze Antwort.
Ich habe mir mal den Code gestrickt mit der "hist" Funktion:
Wenn du den Ausführst, gibt er dir eine Matrix aus in der steht wie oft 0 in Zeile 1 vorkommt, wie oft 1 in Zeile 1 vorkommt usw. und sofort.
Das macht er so oft wie Zeilen in deiner Ursprungsmatrix sind. Ich hoffe das hilft dir.
Ich kann sonst nachher auch noch etwas ausführlicher werden.
Hier noch die Matrix die rauskommt:
3 4 4
0 6 5
3 4 4
2 7 2
Beste Grüße
BBecks
|
|
|
adem89 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 24.03.16
|
 |
|
 |
Wohnort: Mannheim
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.03.2016, 19:17
Titel:
|
 |
kann dazu nur sagen: PERFEKT!
Vielen dank
Ich denke das reicht mir, denn den Rest kann ich dann einfach in die Exceltabelle exportieren lassen und dann die Spaltennamen selber eintragen.
Btw: wie kann ich es exportiere ^^ ich mach mich mal auf die Suche.
Vielen danke nochmal ans MatlabForum
Gruß
EDIT:
5 Minuten später habe ich es gefunden und erfolgreich erledigt!
Für alle die es auch wollen:
xlswrite(filename,A,sheet,range)
bei mir siehts so aus:
xlswrite('NeueListe.xls',b,'Tabelle1','AS5:AU21')
Gruß
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| RSS
Hosted by:
Copyright © 2007 - 2025
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.
|
|