Форум программистов, компьютерный форум, киберфорум
Наши страницы

Matlab

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 71, средняя оценка - 4.93
dobryasha
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 101
#1

Свертка трехмерной плотности распределения вероятности. - Matlab

04.02.2013, 11:54. Просмотров 9431. Ответов 163
Метки нет (Все метки)

Здравствуйте, уважаемые форумчане.

Мне необходимо решить следующую задачу:

Мне известна трехмерная плотность распределения вероятностей (ПРВ):

http://www.cyberforum.ru/cgi-bin/latex.cgi?W({u}_{1},{u}_{2},{u}_{3})=1,353*\frac{{u}_{1}*{u}_{2}*{u}_{3}}{{\sigma}^{6}}*{exp}^{-\frac{1,394*\left({{u}_{1}}^{2}+{{u}_{3}}^{2} \right)+1,826*{{u}_{2}}^{2}}{2{\sigma}^{2}}}*{I}_{0}\left(-0,845*\frac{{u}_{1}*{u}_{2}}{{\sigma}^{2}}\right)*{I}_{0}\left(0,334*\frac{{u}_{1}*{u}_{3}}{{\sigma}^{2}}\right)*{I}_{0}\left(-0,845*\frac{{u}_{2}*{u}_{3}}{{\sigma}^{2}}\right)

Мне известны также выражения для http://www.cyberforum.ru/cgi-bin/latex.cgi?{u}_{1},{u}_{2},{u}_{3}. Они отличаются друг от друга временными моментами. Т.е. выражение для http://www.cyberforum.ru/cgi-bin/latex.cgi?{u} записывается для трех моментов времени http://www.cyberforum.ru/cgi-bin/latex.cgi?{t}_{1},{t}_{2},{t}_{3}. И мы исследуем зависимость этих трех отсчетов.

Так вот мне нужно перейти от трехмерной ПРВ к одномерной. Это можно сделать с помощью двух операций свертки. Например, с помощью первой свертки прийти к выражению вида http://www.cyberforum.ru/cgi-bin/latex.cgi?W({u}_{1},{u}_{2}), а с помощью второй к http://www.cyberforum.ru/cgi-bin/latex.cgi?W({u}_{1}). Я знаю, что в Матлабе есть функция http://www.cyberforum.ru/cgi-bin/latex.cgi?y = conv(x, h), но она легко используется для числовых последовательностей.

А вот как с помощью Матлаба свернуть нужное мне выражение я пока не смекаю. Подскажите пожалуйста, если у Вас есть мысли на эту тему.
Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2013, 11:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Свертка трехмерной плотности распределения вероятности. (Matlab):

График плотности вероятности - Matlab
Вопрос такой. Есть файл в котором сохранены просто числа(случайные величины) вот и надо построить график распределения плотности...

График плотности распределения - Matlab
Всем привет! У меня такой вопрос, допустим есть массив в котором находится 1000 различных знчений (некоторые из них повторяются), как...

Построить плотность распределения вероятности для этой программы без использования hist - Matlab
построить плотность распределения вероятности для этой программы без использования hist.максимальный и минимальный интервал, потом разбить...

Свертка - Matlab
Помогите чайнику, незнающему тонкостей(( Смысл заключается в реализации свертки текста и сигнала с построением графиков. Часть программы...

Свертка и корреляция - Matlab
Доброго времени суток! Как посчитать свертку и корреляцию следующих функций y(x)=cos(5x) z(x)=sin(2x) и вывести графики? Какие формулы...

свертка функций - Matlab
Господа! Вопрос элементарный, уровень - детсад... Однако не могу вот уже вторые сутки найти внятный ответ... В теории говорится, что...

163
dobryasha
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 101
06.03.2013, 17:27  [ТС] #136
Зосима, знаешь...я попробовала взять самый простой случай. Просто трехмерное распределение Релея. И найти одномерное. площадь под графиком все равно не равна 1(( А значит ошибка не в самом выражении, а именно в интегралах или в том, как задаются u1, u2, u3. То, как у меня сделано в таблице - нереализуемо?
0
dobryasha
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 101
06.03.2013, 17:34  [ТС] #137
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function W = prosto(U3)
 
sigma = 1;
 
W = zeros(size(U3));
for i = 1:length(U3)
    U1 = linspace(0,U3(i),20);
    F = zeros(size(U1));
    for j = 1:length(U1)
        U2 = linspace(0,U3(i)-U1(j),20);
        fm = (U1(j).*U2.*U3(i))/(sigma^6).*exp( -( (U1(j)).^2 + (U3(i)).^2 + (U2).^2 )/(2*sigma^2) );
        FdU2 = fm;
        % считаем интеграл по dU3
        F(j) = trapz(U2, FdU2);
    end
    % считаем bнтеграл по dU2
    W(i) = trapz(U1, F);
end
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
clear all
clc
U3 = linspace(0.5e-15, 10, 70);
W = prosto(U3);
W(isnan(W))=0;
h = U3(2)-U3(1);
L = sum(W*h);
hPlot = plot(U3, W, 'r');
set( hPlot, 'LineWidth', 3 );
title('W(u_3)','fontsize',20)
xlabel('u_3','fontsize',20)
ylabel('W','fontsize',20)
grid on
0
Миниатюры
Свертка трехмерной плотности распределения вероятности.  
dobryasha
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 101
06.03.2013, 18:33  [ТС] #138
L =

0.1313

Добавлено через 49 секунд
Наверно, нужно сначала на самом простом примере прийти к единичной площади под графиком, а потом вводить страшную свертку

Добавлено через 56 минут
нужен такой алгоритм, чтобы сумма u1+u2+u3 менялась допустим от 0 до 3 с шагом 0.125. и при этом u1, u2 и u3 менялись, как в таблице моей. может, легче руками вводить эти значения?

Добавлено через 44 секунды
или, думаешь, дело все-таки не в этом?..
0
Зосима
4898 / 3267 / 308
Регистрация: 02.04.2012
Сообщений: 6,190
Записей в блоге: 15
Завершенные тесты: 1
06.03.2013, 19:32 #139
Я просто понять не могу зачем такое условие с суммой

И я тут вспомнил вот, интеграл от распределения, например, релея равен 1 только в бесконечных пределах, в остальных случаях будет меньше... Может дело в пределах и кол-ве точек внутренних интегралов, поэтому результат меньше и ошибка накпливается...
0
dobryasha
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 101
06.03.2013, 19:37  [ТС] #140
Ну условие такое с суммой, потому что такое функциональное преобразование делается. И вообще, свертка делается для того, чтобы найти ПРВ суммы трех отсчетов. Поэтому, эти отсчеты должны иметь такие значения, чтобы в сумме получать сумму, не больше, не меньше. Я это так понимаю...

Про пределы, да. Они по формуле должны быть бесконечны. Так думаешь, если кол-во точек увеличить, может получиться?
0
Зосима
4898 / 3267 / 308
Регистрация: 02.04.2012
Сообщений: 6,190
Записей в блоге: 15
Завершенные тесты: 1
06.03.2013, 19:47 #141
С суммой - надо понять как переменные функционально зависят друг от друга.

Не уверен, даст ли что-то увеличение числа точек
0
dobryasha
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 101
06.03.2013, 19:49  [ТС] #142
Смотри, я поставила

Matlab M
1
U3 = linspace(0.5e-15, 5000, 1000);
И в основном файле

Matlab M
1
2
 U1 = linspace(0,U3(i),1000);
U2 = linspace(0,U3(i)-U1(j),1000);
График конечно, нечитабельный. А вот площадь вообще красивая
L =
9.0274e-005

Добавлено через 1 минуту
Да, это не помогло...
0
Зосима
4898 / 3267 / 308
Регистрация: 02.04.2012
Сообщений: 6,190
Записей в блоге: 15
Завершенные тесты: 1
06.03.2013, 19:56 #143
И вообще с той таблицей неясно, что аргумент функции, ведь значения U3 повторяются, а значение ф-ции F(U1,U2,U3) будут разными...
0
dobryasha
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 101
06.03.2013, 19:59  [ТС] #144
Цитата Сообщение от Зосима Посмотреть сообщение
С суммой - надо понять как переменные функционально зависят друг от друга.
в общем, по формулам препода это выглядит так:
http://www.cyberforum.ru/cgi-bin/latex.cgi?\hat{u3}=u1+u2+u3
В числителе функции идет http://www.cyberforum.ru/cgi-bin/latex.cgi?u1\cdot u2\cdot (\hat{u3}-u1-u2) и так далее.

А проверка:

http://www.cyberforum.ru/cgi-bin/latex.cgi?\int_{0}^{\infty}{W}_{1}(\hat{u3})d\hat{u3}=1
0
Зосима
06.03.2013, 20:00
  #145

Не по теме:

Поставила по 1000 точек каждой переменной и посчитала??! =-0 что у тебя за комп? Мой трактор бы месяц считал!

0
dobryasha
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 101
06.03.2013, 20:06  [ТС] #146
Цитата Сообщение от Зосима Посмотреть сообщение
Поставила по 1000 точек каждой переменной и посчитала??! =-0 что у тебя за комп?
Ноут у меня) Вот такой. Особой шустрости, кстати, за ним не наблюдала ))
0
Миниатюры
Свертка трехмерной плотности распределения вероятности.  
dobryasha
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 101
06.03.2013, 20:11  [ТС] #147
Может, ошибка в том, что я брала просто u3, а не u3 с шапочкой (т.е.сумму)..

А то, что первый интеграл должен браться именно по u1 (с пределами 0;u3 с шапочкой), а второй по u2 (с пределами 0;u3 с шапочкой-u1) а не наоборот, наверно, тоже важно..
0
Зосима
4898 / 3267 / 308
Регистрация: 02.04.2012
Сообщений: 6,190
Записей в блоге: 15
Завершенные тесты: 1
06.03.2013, 20:20 #148
Пробовать надо экспериментировать... но та таблица мне совсем не нравится

*эх, если б на работе мне не делали цефалофилию и было больше свободного времени
0
dobryasha
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 101
06.03.2013, 21:43  [ТС] #149
аналогично)) хоть отпуск бери...(это я о себе )
а как экспериментировать, надо еще догадаться. я вот логически понимаю, за что можно было б подергать, но на языке матлаба не смогаю(
а если таблица плохая, то вообще по моему посту в 19:59 можно что-то придумать? я ведь таблицу строила, как сама препода поняла. может, он и не то имел в виду

Добавлено через 1 час 14 минут
эх, все бы нипочем, но первоначальные сроки сдачи давно вышли..препод говорит, что самый крайний срок - 8 марта. а ничего не получается, хоть плачь
0
Зосима
4898 / 3267 / 308
Регистрация: 02.04.2012
Сообщений: 6,190
Записей в блоге: 15
Завершенные тесты: 1
06.03.2013, 21:51 #150
Мне кажется, там должно быт завязано с dU3 или вообще взять пределы тупо от 0 до 10 во внутренних интегралах!

Не по теме:

Эх, отпуск это здорово! Жду лета, чтоб съездить к теше на блины в Дзержинск

Кстати, можно нескромный вопрос интимного характера?
Кликните здесь для просмотра всего текста
почему интеграл свертки должен равняться 1? О! А еще свертка это произведение спектров! *правда у нас какая-то хитрая свертка - интеграл от одной ф-ции, а должно быть от произведения:
http://www.cyberforum.ru/cgi-bin/latex.cgi?F(x) = \int_{-\infty}^x f(t)*f(x-t) dt или как-то так...
0
06.03.2013, 21:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2013, 21:51
Привет! Вот еще темы с ответами:

Двумерная свертка - Matlab
Добрый день. Пытаюсь в Matlab самостоятельно реализовать двумерную свертку и сравниваю ее со встроенной функцией CONV2. Для...

Восстановление трехмерной поверхности по точкам - Matlab
Я в матлабе практически полный ноль, только сегодня с ним впервые познакомился. Нужно срочно понять, как в нём построить трехмерную...

Свертка ЛЧМ сигналов - Matlab
Доброго времени суток. Мне нужно свернуть два ЛЧМ сигнала. Насколько я понял, для их свертки необходимо взять их спектры, один сделать...

Визуализация трехмерной матрицы по сечениям (по страницам) - Matlab
Доброго вечера всем. Такой вопрос: Есть трехмерная матрица K с размерностями (N,N,3). Как визуализировать эту матрицу на одном графике,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
150
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru