【发布时间】:2017-12-30 23:32:27
【问题描述】:
我有一个矩阵(或此处的数组以便于理解),其中填充了值,例如:
[0 0 1 0 0 0 1 0 0 0 ]
现在我想将每个元素(例如 0)填充为一个随机值,但每个元素都应该不同。
如果我这样做:
replace_val = 0
x = [ 0 0 1 0 0 0 1 0 0 0 ]
x(x == replace_val) = rand
那么所有0都会被替换成相同的数字,例如:
[ 0.8361 0.8361 1.0000 0.8361 0.8361 0.8361 1.0000 0.8361 0.8361 0.8361 ]
现在最直接的方法是创建一个循环遍历向量,并且在满足条件的任何时候,它都会调用 rand 函数,如下所示:
for i=1:length(x)
if x(i) == replace_val
x(i) = rand;
end
end
但是,对于矩阵或非常大的数组,这将非常慢。所以,我想知道是否有任何一种快速、matlabish 的方式来获得所需的输出?
【问题讨论】:
标签: arrays matlab matrix random