Matlab:缩放范围
问题描述:
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
可有人请出示时的数字是从正态分布生成我如何应用相同的技术?
答
由于@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
a。根据定义,正态随机数在-inf和+ inf之间。湾你的分区域是什么? [-inf -1],( - 1 1),[1 inf]? – Tal