2016-05-14 6 views
0

Ich habe eine Matrix und ich möchte eine Gruppe von Zahlen in dieser Matrix nacheinander eingeben. Hier ein Beispiel: Angenommen:Eingabe einer Gruppe von Zahlen sequentiell in bestimmten Positionen in einer Matrix mit Matlab

x = [1 2 3 4 5 6 7] % Group of numbers 
A =      % The matrix 
1.1 2.2 3.1 4.1 5.3 1.2 1.3 
3.1 4.2 1.1 7.4 5.6 2.2 1.3 
1.4 5.2 4.3 2.2 4.3 3.2 1.3 
1.6 3.2 6.3 2.1 2.6 7.2 1.3 
6.1 1.3 9.4 4.2 3.3 1.2 1.3 
2.5 4.2 3.2 5.1 6.7 1.2 1.3 

Was ich versuche die Gruppe von Zahlen zu tun, ist eine Möglichkeit, mit Schleifen zu finden in x gespeichert einzugeben in der folgenden Art und Weise zu sein:

A =      % The matrix 
1.1 2.2 3.1 4.1 5.3 1.2 1.3 1.1 2.2 3.1 4.1 5.3 1.2 1.3 1.1 2.2 3.1 4.1 5.3 1.2 1.3 
1.0 2.0 3.0 4.0 5.0 6.0 7.0 3.1 4.2 1.1 7.4 5.6 2.2 1.3 3.1 4.2 1.1 7.4 5.6 2.2 1.3 
1.4 5.2 4.3 2.2 4.3 3.2 1.3 1.0 2.0 3.0 4.0 5.0 6.0 7.0 1.4 5.2 4.3 2.2 4.3 3.2 1.3 
1.6 3.2 6.3 2.1 2.6 7.2 1.3 1.6 3.2 6.3 2.1 2.6 7.2 1.3 1.0 2.0 3.0 4.0 5.0 6.0 7.0 
6.1 1.3 9.4 4.2 3.3 1.2 1.3 6.1 1.3 9.4 4.2 3.3 1.2 1.3 6.1 1.3 9.4 4.2 3.3 1.2 1.3 
2.5 4.2 3.2 5.1 6.7 1.2 1.3 2.5 4.2 3.2 5.1 6.7 1.2 1.3 2.5 4.2 3.2 5.1 6.7 1.2 1.3 

Wie Sie sehen können, bewegt sich die Zahlengruppe (von 1.0 bis 7.0) (Zeile für Zeile) bis zum Ende der Matrix. Bei jeder Bewegung erhöht sich auch die Matrixdimension. Ich glaube, dass ich zuerst die Matrixdimension definieren sollte. Um dies zu tun, fand ich, dass die Matrix-Spalten mit der Anzahl der Zeilen multiplizieren Ich werde die neue Matrix-Dimension, die in diesem Fall wird 7 (Zeilen) x 49 (Spalten).

Ich muss wissen, wie man eine solche Matrix automatisch mit for-Schleife oder einem anderen möglichen Weg erstellt.

Vielen Dank im Voraus.

Antwort

0
  1. Verwenden Sie repmat, um 3 Kopien Ihrer Matrix horizontal zu erstellen.

  2. Verwenden Sie die Zuweisungssyntax der Matlab: A (Zeile, Spalte: Spalte + Länge (x) -1), um X in die gewünschte Zeile und Spalte zu kopieren.

Code-Beispiel:

outA = repmat(A,1,3); %replicate A 
outA(2,1:length(x)) = x; %inserts x into the beginning of the 2nd row 
outA(4,size(outA,2)-length(x)+1:end) = x; %inserts x into the end of the 4th row 

Ergebnisse:

outA = 
1.1 2.2 3.1 4.1 5.3 1.2 1.3 1.1 2.2 3.1 4.1 5.3 1.2 1.3 1.1 2.2 3.1 4.1 5.3 1.2 1.3 
1.0 2.0 3.0 4.0 5.0 6.0 7.0 3.1 4.2 1.1 7.4 5.6 2.2 1.3 3.1 4.2 1.1 7.4 5.6 2.2 1.3 
1.4 5.2 4.3 2.2 4.3 3.2 1.3 1.4 5.2 4.3 2.2 4.3 3.2 1.3 1.4 5.2 4.3 2.2 4.3 3.2 1.3 
1.6 3.2 6.3 2.1 2.6 7.2 1.3 1.6 3.2 6.3 2.1 2.6 7.2 1.3 1.0 2.0 3.0 4.0 5.0 6.0 7.0 
6.1 1.3 9.4 4.2 3.3 1.2 1.3 6.1 1.3 9.4 4.2 3.3 1.2 1.3 6.1 1.3 9.4 4.2 3.3 1.2 1.3 
2.5 4.2 3.2 5.1 6.7 1.2 1.3 2.5 4.2 3.2 5.1 6.7 1.2 1.3 2.5 4.2 3.2 5.1 6.7 1.2 1.3 
+0

Vielen Dank. Das gibt mir einen sehr guten Start. Hoffen Sie einen schönen Tag –

+0

Glücklich zu helfen! Wenn Ihre Frage zu 100% gelöst wurde, akzeptieren Sie die Antwort, indem Sie das V-Zeichen von links markieren. Wenn Sie weitere Fragen zu Klärungen haben, zögern Sie nicht zu fragen – drorco

+0

Sie sind fantastisch. Antwort angenommen. –

Verwandte Themen