2017-09-03 2 views
1

ich einen Vektor A8 mit zwei Spalten in ihm haben, sind hier zwei Reihen:Rearrange Elemente gerade und ungerade Spalten in einem Vektor

24.0192018449307 48.0192018449307 
72.0576055347920 96.0576055347920 

ich einen neuen Vektor A9 so erstellen möchten, dass ich eine Spalte erhalten:

24.0192018449307 
48.0192018449307 
72.0576055347920 
96.0576055347920 

I haben versucht, die folgende Schleife zu verwenden:

for j=1:4 
    if mod(j,2)~=0 
     A9(j)=A8(j,1); 
    else 
     A9(j)=A8(j,2); 
    end 
end 

Offensichtliche ly, das funktioniert nicht, weil A8 hat Größe 2x2, nicht 1x4.

Aber ich kann es nicht herausfinden.

Ich habe versucht, mit zwei Schleifen:

for i=2; 
    for j=1:4 
     if mod(j,2)~=0 
     A9(j)=A8(i,1); 
     else 
     A9(j)=A8(i,2); 
     end 
    end 
end 

Aber das gibt mir A9, die wiederholt nur die beiden Elemente der zweiten Reihe hat.

Wie kann ich diese Matrix neu anordnen?

+0

Was ist, wenn Sie zwei for-Schleifen verwenden, aber nicht verschachtelt. In der ersten weisen Sie A9 die Werte der ersten Zeile A9 (i) = A8 (0, i) zu. Und in der zweiten für Sie auf diese Weise zuweisen A9 (i + 2) = A8 (1, i) –

Antwort

3
A = [24.0192018449307 48.0192018449307; 
     72.0576055347920 96.0576055347920]; 
B = A.'; 
B = B(:) 

Mit der Tatsache, dass MATLAB Spalte basiert, und somit können Sie Ihre Matrix transponieren und dann die Doppelpunkt-Operator verwenden, um einen einzelnen Vektor zu erhalten.

Übrigens, die Verwendung von Variablennamen wie A8 und A9 riecht wirklich schlecht. Wie die Benennung dynamischer Variablen schlecht. Sie werden später viel Ärger bekommen, wenn Sie Ihren Variablen dynamische Namen oder unklare Namen geben.

Verwandte Themen