WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Matrix auffüllen mit Vektor als Index

 

filtero
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 04.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.06.2013, 00:47     Titel: Matrix auffüllen mit Vektor als Index
  Antworten mit Zitat      
Hi zusammen

Ich bin ein Matlab newbie und für eine Aufgabe muss ich folgendes lösen:

Ich habe:
- einen Vektor A mit 1:8568 inhalten
und
- ein Vektor B mit 1:12 inhalten (die 12 Inhalte sind die Stellen

Nun muss ich eine Matrix C mit der grösse 12*400 erstellen
Jede Zeile muss dann mit dem Inhalt des Vektors A befüllt werden und zwar so:
erste Zeile: A(1:B(1))
zweite Zeile A((B(1)+1:B(2);
etc.

B gibt also an bis zu welchem Feld die Zahlen aus A in eine Reihe von C geschrieben werden müssen bevor die Zahlen in die nächste Reihe geschrieben werden.

Ich blick da gerade nicht sehr durch und wäre euch sehr dankbar!

Vielen Dank schon mal!!!
Private Nachricht senden Benutzer-Profile anzeigen


Kia
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 89
Anmeldedatum: 02.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.06.2013, 08:39     Titel:
  Antworten mit Zitat      
Hallo,

ich bin mir nicht sicher, ob ich deine Frage richtig verstanden habe.
hast du schon "reshape" ausprobiert? Die Dimensionen müssten allerdings übereinstimmen.

Wenn du eine Matrix mit 12x400 Einträge haben willst, ist diese wesentlich kleiner als dein Vektor A. Was soll mit den restlichen Einträge des Vektors A geschehen? Wenn es jetzt nicht automatisch für unterschiedlichsten Vektoren und Matrixen laufen soll kann man ja auch manuell es anpassen, in dem Einfach Vektor A auf die gewünschte Länge schneidet und dann per reshape in Matrix umwandelt[/code]
Private Nachricht senden Benutzer-Profile anzeigen
 
filtero
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 04.06.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.06.2013, 12:51     Titel:
  Antworten mit Zitat      
Sorry du hast recht. Die Matrix C hat 1000 Spalten sonst passts ja nicht rein.

B ist so aufgebaut (die ersten 3 Einträge von 12).
325
1040
1743
...
Sorry auch hier ist mir ein kleiner Fehler unterlaufen. Es ist ein 12: 1 Vektor.


Nun müssen die Inhalte von A in C so geschrieben werden, dass in die erste Reihe alle inhalte 1 bis 325 , in die 2. Reihe alle einträge von 326 bis 1040 und in die dritte Reihe alle von 1041 bis 1743 eingetragen werden etc.

Idealerweise wäre wenn die max spaltenanzahl von C so gross wäre wie das längste Stück, welches aus A rausgeschnitten wird.
Private Nachricht senden Benutzer-Profile anzeigen
 
Rek

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.06.2013, 13:59     Titel:
  Antworten mit Zitat      
Wenn ich dich richtig verstanden habe dann könnte folgendes weiterhelfen

Code:
% Vektor zum Berechnen der Spaltenlängen
B1 = [0 B(1:length(B)-1)];
% Spaltenlängen
diff = B-B1;
% Matrix mit NaN vorbelegen sonst steht in restlichen Spaltenwerten ne 0
C(1:max(diff),1:length(B)) = NaN;
% Matrix Spaltenweise füllen
C(1:diff(1),1) = a(1:B(1));
for i = 2:length(B)
    C(1:diff(i),i) = a(B(i-1)+1:B(i));
end
% Ausgabe
ergebnis = C

mfg Rek
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.