使用多变量高斯估计椭圆

时间:2017-02-18 22:21:26

标签: matlab geometry gaussian

在MATLAB中,假设我有椭圆的参数:

  • (x,y)center
  • 次轴半径
  • 长轴半径
  • 旋转角度

现在,我想生成位于该椭圆内的随机点,近似于2D高斯。

到目前为止,我的尝试是:

num_samps = 100;
data = [randn(num_samps, 1)+x_center  randn(num_samps, 1)+y_center];

这给了我一组大约以中心为中心的数据,但如果我在顶部绘制椭圆,一些点可能仍在外面。

如何强制执行轴规则和旋转?

感谢。

1 个答案:

答案 0 :(得分:0)

我的假设

x_center = h

y_center = k

次轴半径= b

Major Axis Raduis = a

旋转角度= alpha

h=0;
k=0;
b=5;
a=10;
alpha=30;
num_samps = 100;
data = [randn(num_samps, 1)+h  randn(num_samps, 1)+k];
chk=(((((data(:,1)-h).*cos(alpha)+(data(:,2)-k).*sin(alpha))./a).^2) +...
    (((data(:,1)-h).*sin(alpha)+(data(:,2)-k).*cos(alpha))./b).^2)<=1;
idx=find(chk==0);
if ~isempty(idx)
    data(idx,:)=data(idx,:)-.5*ones(length(idx),2);
end