%Этот скрипт иллюстрирует многомерное гауссовское распределение и его предельные распределения.%Этот код выдается по «лицензии» CC0%Определить пределы построения графика X = - 5 : 0.1 : 5 ; Y = - 5 : 0.1 : 5 ; %2-d Среднее значение и ковариационная матрица MeanVec = [ 0 0 ]; CovMatrix = [ 1 0.6 ; 0.6 2 ]; %Получить одномерные функции плотности вероятности для «стен» Z_x = normpdf ( X , MeanVec ( 1 ), sqrt ( CovMatrix ( 1,1 ))); Z_y = normpdf ( Y , MeanVec ( 2 ) , sqrt ( CovMatrix ( 2,2 ) ) ) ; %Получить 2-мерные выборки для "пола" Samples = mvnrnd ( MeanVec , CovMatrix , 10000 ); %Получите сигма-эллипсы, преобразовав круг с помощью разложения Холецкого L = chol ( CovMatrix , 'lower' ); t = linspace ( 0 , 2 * pi , 100 ); %Наш эллипс будет иметь 100 точек C = [ cos ( t ) ; sin ( t )]; %Единичная окружность E1 = 1 * L * C ; E2 = 2 * L * C ; E3 = 3 * L * C ; %Получите эллипсы 1,2 и 3-сигма figure ; hold on ; %Нанести образцы на "пол" plot3 ( Samples (:, 1 ), Samples (:, 2 ), zeros ( size ( Samples , 1 ), 1 ), 'k.' , 'MarkerSize' , 2 ) %Нанести эллипсы 1, 2 и 3-сигма немного выше пола %plot3(E1(1,:), E1(2,:), 1e-3+zeros(1,size(E1,2)),'Color','g','LineWidth',2); %plot3(E2(1,:), E2(2,:), 1e-3+zeros(1,size(E2,2)),'Color','g','LineWidth',2); plot3 ( E3 ( 1 ,:), E3 ( 2 ,:), 1e-3 + нули ( 1 , размер ( E3 , 2 )), 'Цвет' , 'g' , 'Толщина линии' , 2 ); % Построить гистограммы на стенах из данных в середине [ n_x , xout ] = hist ( Samples ( :, 1 ) , 20 ); % Создать 20 столбцов n_x = n_x./(sum(n_x)*(xout(2)-xout(1 ) ) ); %Нормализовать , чтобы получить PDF [ ~ , ~ , ~ , x_Pos , x_Height ] = makebars ( xout , n_x ) ; % Создать точки столбцов plot3 ( x_Pos , Y ( end ) * ones ( size ( x_Pos ) ) , x_Height , ' -k ' ) % Теперь построим на стене другие гистограммы [ n_y , yout ] = hist ( Samples (:, 2 ), 20 ); n_y = n_y./(sum(n_y ) * ( yout ( 2 ) - yout ( 1 ))); [ ~ , ~ , ~ , y_Pos , y_Height ] = makebars ( yout , n_y ) ; plot3 ( X ( 1 ) * ones ( size ( y_Pos ) ) , y_Pos , y_Height , '-k' ) %Теперь построим графики одномерных функций плотности распределения по гистограммам plot3 ( X , ones ( size ( X )) * Y ( end ), Z_x , '-b' , 'LineWidth' , 2 ); plot3 ( ones ( size ( Y )) * X ( 1 ), Y , Z_y , '-r' , 'LineWidth' , 2 ); %Сделать фигуру красивой на сетке ; view ( 45 , 55 ); axis ([ X ( 1 ) X ( end ) Y ( 1 ) Y ( end )])