|
|
For Schleife zur Kombination von Vektor und Matrix |
|
Nordsee |
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 07.08.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.08.2020, 15:15
Titel: For Schleife zur Kombination von Vektor und Matrix
|
|
Hallihallo,
ich habe ein Problem einen Vektor und eine Matrix zu kombinieren.
Die 4. Zeile der Matrix ist mit Einsen und Nullen versehen.
Mein Ziel ist es, dass die 22 Werte des Vektors nacheinander hinter die "Einser Pakete" geschrieben werden. Die Anzahl der "Einser Pakete" sind ebenfalls 22.
Z.B A = [0 0 0 1 1 1 0 0 1 1 0 0 ]
--> [0 0 0 1 1 1 3 0 1 1 2 0 ]
B = [3 2 ]
Lösen wollte ich das mit einer For Schleife und while Bedingung.
Mein Ergebins schaut so aus, dass nur der erste Wert des Vektors in die Matrix hinter jedes einzelne "Einser Paket" geschrieben wird.
Ich würde mich über eine Antwort freuen.
Vielen Dank
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 07.08.2020, 16:21
Titel:
|
|
Hallo,
das sollte ohne Schleifen gehen:
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Nordsee |
Themenstarter
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 07.08.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.08.2020, 15:04
Titel:
|
|
Hallo Harald,
vielen Dank für die schnelle Antwort.
Leider kommt diese Fehlermeldung:
"Unable to perform assignment because the left and right sides have a different number of elements"
Der Auswahlbefehl der ersten Zeile deines Codes wird richtig ausgeführt.
Es scheitert dann in der 2. Zeile.
Die Matrix hat 705 Spalten und der Vektor nur 22 Spalten
Ich habe den Vektor auch noch auf 705 Elemente mit Nullen aufgefüllt, aber es kommt die gleiche Fehlermeldung.
Hast du vielleicht eine Idee wie man das lösen kann?
Viele Grüße
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 09.08.2020, 16:42
Titel:
|
|
Hallo,
für das gegebene Beispiel klappt es fehlerfrei. Wenn es für dein echtes A und B eine Fehlermeldung gibt, dann wäre der erste Schritt zu schauen, was dort anders ist als im Beispiel.
Anscheinend passen die Anzahl der true in toInsert und die Länge von B nicht zusammen, obwohl beides nach deiner Aussage
Zitat: |
Mein Ziel ist es, dass die 22 Werte des Vektors nacheinander hinter die "Einser Pakete" geschrieben werden. Die Anzahl der "Einser Pakete" sind ebenfalls 22. |
22 sein müsste.
Wie vergleichen sich denn
sum(toInsert)
und
length(B)
?
Du schreibst immer mal wieder was von Matrizen. Hat eine der Variablen A und B auch mehrere Zeilen und wenn ja: welche?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Nordsee |
Themenstarter
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 07.08.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.08.2020, 17:25
Titel:
|
|
Hallo Harald,
vielen Dank für deine Antwort.
Ich habe nochmal deine Anmerkungen überprüft und jetzt funktioniert es.
Ich habe mir die Zeile der Matrix als neue Variable ausgeben lassen und somit hatte ich die gleichen Dimensionen.
Vielen Dank
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 15.08.2020, 14:04
Titel: Re: For Schleife zur Kombination von Vektor und Matrix
|
|
Hallo Nordsee,
Noch ein paar Tipps:
while
erzeugt Schleifen. Es funktioniert zwar in deinem Fall, aber der Befehl für die Bedingung wäre
if
.
length
ist bei Matrizen tückisch, weil er immer die längste Dimension nimmt. Verwende lieber
size(A, 2)
um die Anzahl der Spalten zu ermitteln.
Mit Haralds Vorschlag geht das am effizientesten. Aber hier der Code mit Schleifen:
Gruß Jan
|
|
|
|
|
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.
|
|