在MATLAB中,假设我有椭圆的参数:
现在,我想生成位于该椭圆内的随机点,近似于2D高斯。
到目前为止,我的尝试是:
num_samps = 100;
data = [randn(num_samps, 1)+x_center randn(num_samps, 1)+y_center];
这给了我一组大约以中心为中心的数据,但如果我在顶部绘制椭圆,一些点可能仍在外面。
如何强制执行轴规则和旋转?
感谢。
答案 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