在matlab中改变向量的一些元素

时间:2017-05-24 03:31:24

标签: matlab random

我有一个名为x的向量。  我想改变向量的元素,这些元素对于高斯随机数的绝对值是负的,其中std等于1并且意思是等于0.我使用下面的代码,但它不起作用。有人可以建议一种方法吗?

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

1 个答案:

答案 0 :(得分:0)

设A为你的矩阵,将负元素改为随机数,你可以使用:

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))) ;

您的代码出现问题:

您的索引是逻辑,您不能使用逻辑来定义/获取随机数。注意,你不需要使用abs(rand)),rand只给你+ ve随机数。