Matlab / Oktave Einstrich für einen n-Vektor mit einer 1 in der i-ten Position

7

Wenn Sie beispielsweise i=5 und n=8 angeben, möchte ich [0;0;0;0;1;0;0;0] generieren. Insbesondere möchte ich den Vektor v so generieren, dass:

%Vor%

Gibt es eine (vernünftige) Möglichkeit, dies in einer Zeile zu tun?

    
Snowball 04.06.2012, 03:47
quelle

4 Antworten

5

Hier ist eine andere Lösung, die sparse verwendet, um einen Zeilenvektor mit n length zu erstellen a 1 in i th-Position:

%Vor%

Der Vorteil ist, dass dies für große n auch Speichereffizienz ist und wie in Matrixberechnungen üblich verwendet werden kann. Wenn Sie jemals den vollständigen Vektor benötigen, verwenden Sie einfach full .

    
abcd 05.06.2012, 00:29
quelle
13

Eine andere Lösung:

%Vor%

Tatsächlich können Sie einen Vektor y von Zahlen von 1 bis n haben und Vektoren wie diese für jedes Element erhalten:

%Vor%

Sie können meinen Blogpost für Details zu dieser allgemeinen Lösung sehen .

    
topchef 05.06.2012 00:16
quelle
11

Eine Möglichkeit ist [1:8]'==5 oder allgemeiner [1:n]'==i

    
Snowball 04.06.2012 03:49
quelle
1

Hier ist noch eins:

%Vor%

Und noch eine (Erzeugt einen Zeilenvektor):

%Vor%

Oder ein Spaltenvektor:

%Vor%

Hier ist noch eins:

%Vor%     
Andrey Rubshtein 04.06.2012 06:14
quelle

Tags und Links