matlab实现椭圆正态分布,Normal distribution and Ellipse正态分布和椭圆、椭球

a4c26d1e5885305701be709a3d33442f.png

实际上,我们对原始椭圆作一个平移变换(x-u)和一个旋转变换(V*),可以使其中心平移到原点,长短轴的方向与坐标轴重合。而绘等概率椭圆的过程则与此相反,先用标准的椭圆方程产生组成曲线的离散点,然后经过相反的旋转变换和平移,得到原始的椭圆。

举例来说,首先,设置二维正态分布的参数,均值和协方差,并用mvnrnd产生一组符合此分布的随机数。

Mu = [2 3]';

Sigma = [0.9 0.4;0.4 0.2];

p = mvnrnd(Mu,Sigma,100);

plot(p(:,1),p(:,2),'.','MarkerSize',6)

设置半径,进行特征值分解

r =1;

[V,D] = eig(Sigma);

用linspace产生一个坐标轴(y)上的一组等间隔离散坐标值,再根据标准椭圆方程产生对应的x的坐标。

y =

linspace(-sqrt(r^2*D(2,2)),sqrt(r^2*D(2,2)),60);

% compute x

x(1,:) = sqrt((r^2-y(:).^2/D(2,2))*D(1,1));

x(1,:) = real(x(1,:));

这只产生了半个椭圆,还要产生另一半(注意两条曲线的坐标旋转方向要一致),然后旋转,平移,画图:

Ellip = [x,-x(1,:)]; % x

Ellip(2,:) = [y,fliplr(y)]; %y

Ellip = Ellip'*inv(V); % rotate

Ellip(:,1) = Ellip(:,1)+Mu(1); %shift

Ellip(:,2) = Ellip(:,2)+Mu(2);

hold on;

plot(Ellip(:,1),Ellip(:,2));

plot(Mu(1),Mu(2),'+'); %Plot center

最终的效果:

a4c26d1e5885305701be709a3d33442f.png

另外,在对原始椭圆做旋转变换时,如果在V的前面再乘以一项,改为

a4c26d1e5885305701be709a3d33442f.png,则椭圆会变为圆。对多元正态分布的随机变量应用此变换,则其分布在各个方向上也变为均匀的。这就是信号处理中的白化变换。

三维正态分布的等概率曲面为椭球,其绘制过程也是类似的。

产生1/8曲面

xhalf = linspace(sqrt(r^2*D(1,1)),0,Nint);

Ninthalf = round(Nint/2);

zsect = zeros(Nint,Ninthalf);

ysect = zeros(Nint,Ninthalf);

for ti = 1:Nint

r2d = r^2 - xhalf(ti).^2/D(1,1);

ysect(ti,:) = linspace(0,sqrt(r2d*D(2,2)),Ninthalf);

zsect(ti,:) = sqrt((r2d - ysect(ti,:).^2/D(2,2) )*D(3,3));

xsect(ti,1:Ninthalf) = xhalf(ti);

end

zsect = real(zsect);

a4c26d1e5885305701be709a3d33442f.png

通过镜像产生1/4

%x>0,Z>0

xsect = [xsect,xsect];

ysect = [ysect,fliplr(ysect)];

zsect = [zsect,-fliplr(zsect)];

a4c26d1e5885305701be709a3d33442f.png

1/2

%x>0

xsect = [xsect,xsect];

ysect = [ysect,-fliplr(ysect)];

zsect = [zsect,fliplr(zsect)];

a4c26d1e5885305701be709a3d33442f.png

1/1

% make it a whole

xsect = [xsect;-flipdim(xsect,1)];

ysect = [ysect;flipdim(ysect,1)];

zsect = [zsect;flipdim(zsect,1)];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值