使用3高斯分布MATLAB生成数组

时间:2014-12-22 10:39:48

标签: arrays matlab gaussian

我需要帮助!我的目的是在MATLAB中开发一个例程,从一系列操作(由标签建模,平均值和方差)开始,能够生成一系列活动。我用我的代码解释得更好:

action_awake_in_bed = [1 5*60 1*60];
action_out_of_bed = [3 30 10];
action_out_bedroom = [2 2*60 15];
ACTIVITY_WAKE = {'action_awake_in_bed','action_out_of_bed','action_out_bedroom'};

动作数组的第一个元素是标签(一个姿势标签),第二个元素是动作的长度(以秒为单位),第三个元素是方差。

我需要输出数组ACTIVITY_WAKE ....

由于

1 个答案:

答案 0 :(得分:1)

让我们使用结构来存储元参数

action.awake_in_bed   = [1 5*60 1*60];
action.out_of_bad     = [3 30 10];
action.out_of_bedroom = [2 2*60 15];
ACTIVITY = {'awake_in_bed','out_of_bad','out_of_bedroom'};

在这些预定义之后,我们可以对活动向量进行采样

ACTIVITY_WAKE = cell(1,numel(ACTIVITY)); 
for ii = 1:numel( ACTIVITY ) %// foreach activity
    cp = action.(ACTIVITY{ii}); %// get parameters of current activity
    n = round( cp(2) + sqrt(cp(3))*randn() ); %// get the number of samples
    ACTIVITY_WAKE{ii} = repmat( cp(1), 1, n );
end
ACTIVITY_WAKE = [ ACTIVITY_WAKE{:} ];

为了获得样本数量,我使用following配方从mean~=0std~=1的正态分布中进行采样。