2017-05-24 3 views
0

Ich habe einen Vektor namens x. Ich möchte Elemente des Vektors, die negativ sind, zu absoluten Wert einer Gaußschen Zufallszahl mit std gleich 1 und Mittelwert gleich 0 ändern. Ich habe unter Code verwendet, aber es funktioniert nicht. Könnte jemand einen Weg vorschlagen, es zu tun?Ändern einiger Elemente des Vektors in Matlab

index = (x < 0); x(index) = abs(rand(1,index)); 

Antwort

0

Sei A Ihre Matrix, negative Elemente zu einer Zufallszahlen zu ändern, können Sie verwenden:

A = [-1 -2 3 4 5 -1 0 9 ] ; 
mu = 0; sigma = 1 ; 
idx = A<0 ; 
A(idx) = abs(normrnd(mu,sigma,1,nnz(idx))) ; 

Problem mit Ihrem Code:

Ihre Index Logicals sind, können Sie Sie können keine logischen Elemente zum Definieren/Abrufen von Zufallszahlen verwenden. Beachten Sie, dass Sie nicht abs (rand) verwenden müssen, rand gibt Ihnen nur + ve Zufallszahlen.

+0

Es war ein Fehler. Ich brauche eine Gaußsche Zufallszahl –

+0

Okay..code bearbeitet .. –

+0

Es ist korrekt. Vielen Dank. Aber bitte ändere die Varianz auf 1 und bedeute auf Null und benutze sqrt –

Verwandte Themen