2016-02-26 92 views
1

x = randn(100,1)在範圍[-1,1]中創建一個正態分佈數的序列。Matlab:縮放範圍

我想通過在3個子區域[-1,0,1]中表示上述範圍來指定字符或數字,例如'1','0',' - 1'。我無法理解我該怎麼做。我能爲均勻分佈時做x = rand(100,1)爲3個子區域[0,1/3],(1/3,2/3],(2/3,1]

x = rand(100,1) 
for i =1:100 
if x(i) <1/3 
x(i) = -1; 
elseif x(i) < 2/3 
    x(i) = 0; 
else x(i)=1; 
end 
end 

可有人請出示時的數字是從正態分佈生成我如何應用相同的技術?

+1

a。根據定義,正態隨機數在-inf和+ inf之間。灣你的分區域是什麼? [-inf -1],( - 1 1),[1 inf]? – Tal

回答

2

由於@Tal表示,正態分佈範圍從-Inf+Inf

此外,您的代碼並不反映您在範圍方面的解釋。

當您更正範圍時,可以使用矩陣索引來分配沒有for循環的值(這將會更有效)。

例如:

此代碼將分配:

  • -1到範圍(-Inf,-1/3)
  • 0至範圍[-1/3,1/3]
  • 1到範圍(1/3,+ Inf文件)

x(x < -1/3) = -1; 
x((x <= 1/3) & (x ~= -1)) = 0; 
x(x > 1/3) = 1; 

注意這是因爲-1 < -1/3,那麼第一分配不與第二個重疊。否則,你將需要一個輔助變量。

+0

謝謝你的回覆。我想知道是否可以根據分佈的均值創建範圍。對任何分佈f(x)說,如果平均值(x)用於創建區間,那麼對於[0,1]中的x和當[-1,1]中的x如何創建區間?我認爲對於[0,1]中的x:範圍是[0,-mean(x)],(-mean(x),+ mean(x)],(mean(x),1]?對於x在[-1,1]中,範圍是多少?請你糾正我錯在哪裏?非常感謝你的時間。 – SKM