Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如果值>;则用随机数替换数组中的值;1._Arrays_Matlab_Random - Fatal编程技术网

Arrays 如果值>;则用随机数替换数组中的值;1.

Arrays 如果值>;则用随机数替换数组中的值;1.,arrays,matlab,random,Arrays,Matlab,Random,我有一个由对数正态分布生成的值数组(1000 x 8),表示一小时后表面上细菌死亡的百分比。问题是有些值大于100%,所以我想用0到1之间的随机值替换它们 dieOff=zeros(1000,8); %make empty 1000X8 array m = 0.9; % 90% die-off v = 0.01;% std from experiment mu = log((m^2)/sqrt(v+m^2)); %conver to lognorm sigma = sqrt(log(v/(m

我有一个由对数正态分布生成的值数组(1000 x 8),表示一小时后表面上细菌死亡的百分比。问题是有些值大于100%,所以我想用0到1之间的随机值替换它们

dieOff=zeros(1000,8); %make empty 1000X8 array
m = 0.9; % 90% die-off
v = 0.01;% std from experiment


mu = log((m^2)/sqrt(v+m^2)); %conver to lognorm
sigma = sqrt(log(v/(m^2)+1));

dieOff=lognrnd(mu,sigma,n,k);% generate values

dieOff(dieOff>1)=rand(); %replace with random
但是它看起来像是
rand()
只生成1个值,并用同一个值替换所有大于1的值,这不是我想要的。如何以整洁的格式修复此问题

histogram(dieOff) 

rand()
给出一个数字,即用相同的随机常数替换所有值。相反,对每个事件使用一个随机数:

dieOff(dieOff>1)=rand(nnz(dieOff>1),1);
rand(n,k)
提供了一个0到1之间的n×k随机数矩阵
rand(n)
提供了一个n乘n的随机数矩阵(即平方),因此对于
n=1
而言,它是一个单一的数字
rand()
rand(1)
rand()
的缩写,它给出一个单一的数字,即用相同的随机常数替换所有值。相反,对每个事件使用一个随机数:

dieOff(dieOff>1)=rand(nnz(dieOff>1),1);
rand(n,k)
提供了一个0到1之间的n×k随机数矩阵
rand(n)
提供了一个n乘n的随机数矩阵(即平方),因此对于
n=1
而言,它是一个单一的数字
rand()
rand(1)
的缩写