【问题标题】:changing some elements of vector in matlab在matlab中改变向量的一些元素
【发布时间】:2017-05-24 03:31:23
【问题描述】:

我有一个名为 x 的向量。 我想将向量的元素更改为高斯随机数的绝对值,std 等于 1,平均值等于 0。我使用了下面的代码,但它不起作用。有人可以建议一种方法吗?

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

【问题讨论】:

    标签: matlab random


    【解决方案1】:

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

    你的代码有问题:

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

    【讨论】:

    • 这是一个错误。我需要一个高斯随机数
    • 没错。谢谢你。但请将方差更改为 1,均值为零并使用 sqrt
    • @OliverRange 如果正确,请考虑接受。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多