【问题标题】:Multivariate Random Number Generation in MatlabMatlab中的多元随机数生成
【发布时间】:2013-04-18 11:37:47
【问题描述】:

我可能有点密集,但我不是很数学,似乎无法理解创建多元数据的协方差元素。

我在寻找两列随机数据(代表两个相关变量)。

我认为我需要使用 mvnrnd 函数是正确的,并且我知道“mu”必须是我的平均向量的一列。因为我的数据中需要 4 个不同的类,所以它们将是 (1, 1) (-1 1) (1 -1) 和 (-1 -1)。我假设我每次都必须使用不同的平均向量列执行 4x 函数,然后将它们组合起来以获得完整的数据集。

我不明白我应该为 SIGMA 输入什么 - Matlab 帮助告诉我它必须是“d 乘 d 对称半正定矩阵,或 d 乘 d 乘 n 数组”即协方差矩阵。我不明白如何为尚未生成的数字创建协方差矩阵。

任何建议将不胜感激!

【问题讨论】:

  • covariance matrix 是定义和确定分布的东西,这就是为什么它是输入的一部分,就像 meanstandard deviation 一样。
  • 对不起,这可能是我的教授偏见,但是如果你附上一个例子和一些粗略的数字呢?
  • 二维特征空间中的4个高斯分布(总共1000个案例)。每个分布的先验概率应为 0.25,平均向量必须为 class1 = (1,1), c2 = (1,-1), c3 = (-1,1) 和 c4 = (-1,-1) .它只是用于遥感分类目的的模拟数据。我目前正在更改 Matlab 示例以了解更改协方差矩阵中的值的实际作用。感谢您的链接:)

标签: matlab random covariance


【解决方案1】:

假设我正确理解了你的情况,我会这样做:

data = [normrnd(0,1,5000,1),normrnd(0,1,5000,1)]; %% your starting data series
MU = mean(data,1);
SIGMA = cov(data);

现在,应该可以用MUSIGMA 来喂mvnrnd

r = mvnrnd(MU,SIGMA,5000);
plot(r(:,1),r(:,2),'+') %% in case you wanna plot the results

我希望这会有所帮助。

【讨论】:

  • 请注意,我的只是一个粗略的例子。我不知道您的数据是否强调了任何预期的协方差矩阵。
【解决方案2】:

我认为您的目标是生成模拟的多元高斯分布数据。例如,我使用

k = 6; % feature dimension mu = rand(1,k); sigma = 10*eye(k,k);

单位矩阵乘以10倍是一个对称的半正定矩阵。并且高斯分布会比其他类型的 sigma 更圆。

那么你就可以把它作为上面mvnrnd函数的例子来看看。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    • 2016-02-15
    • 2017-01-08
    • 1970-01-01
    相关资源
    最近更新 更多