Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.79/58: Рейтинг темы: голосов - 58, средняя оценка - 4.79
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
31.12.2014, 17:43
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от pirozhok Посмотреть сообщение
Не поняла вопроса про непосредственное моделирование...мы вроде бы и так подаём гауссовский шум на цепочку?
мы работаем не с шумом, а в плотностью вероятности
я же предлагаю такой вариант: сгенерировать выборку случ.чисел (шум), пропустить его через интегратор, ограничитель и интегратор. Потом можно просуммировать результат с исходным шумом и еще раз пропустить через элементы т.е. сделать обратную связь
Без обратной связи, но с рисунками для наглядности:
*Не торопись плеваться, а посмотри внимательно на множители на осях
**можно добавить коэф-ты, если нужно
Кликните здесь для просмотра всего текста
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
clear, clc
 
% шум на входе:
N = 100000; % длинна выборки
x = normrnd(0,1,[1,N]);
t = linspace(0,1,N);
% считаем плотность по гистограмме
[yn xn] = hist(x,50);
yn = yn/(N*(xn(2)-xn(1))); 
subplot(2,1,1);plot(t,x)
title('Процесс на входе')
subplot(2,1,2);plot(xn,yn)
title('Плотность распределения')
 
 
% интегратор 1
xi = cumtrapz(t,x);
% считаем плотность по гистограмме
[yni xni] = hist(xi,50);
yni = yni/(N*(xni(2)-xni(1))); 
figure % рисуем
subplot(2,1,1);plot(t,xi)
title('Процесс на выходе первого интегратора')
subplot(2,1,2);plot(xni,yni)
title('Плотность распределения')
 
 
% амплитудный ограничитель:
U1 = 1e-3; % уровень ограничения
xa = xi;
xa(xa>U1)=U1;
xa(xa<-U1)=-U1;
% считаем плотность по гистограмме
[yna xna] = hist(xa,50);
yna = yna/(N*(xna(2)-xna(1))); 
figure
subplot(2,1,1);plot(t,xa); ylim([-1.1*U1, 1.1*U1])
title('Процесс на выходе ограничителя')
subplot(2,1,2);plot(xna,yna)
title('Плотность распределения')
 
% интегратор 2
xii = cumtrapz(t,xa);
% считаем плотность по гистограмме
[ynii xnii] = hist(xii,50);
ynii = ynii/(N*(xnii(2)-xnii(1))); 
figure % рисуем
subplot(2,1,1);plot(t,xii)
title('Процесс на выходе второго интегратора')
subplot(2,1,2);plot(xnii,ynii)
title('Плотность распределения')





А вот пять раз прогнали через цепочку:
Кликните здесь для просмотра всего текста
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
clear, clc
 
% шум на входе:
N = 100000; % длинна выборки
x = normrnd(0,1,[1,N]);
t = linspace(0,1,N);
 
% считаем плотность на входе
[yn xn] = hist(x,50);
yn = yn/(N*(xn(2)-xn(1)));
subplot(2,1,1);plot(t,x)
title('Процесс на входе')
subplot(2,1,2);plot(xn,yn)
title('Плотность распределения')
 
U1 = 1e-3; % уровень ограничения
for i = 1:5
    % интегратор 1
    xi = cumtrapz(t,x);
    % амплитудный ограничитель:
    xa = xi;
    xa(xa>U1)=U1;
    xa(xa<-U1)=-U1;
    % интегратор 2
    xii = cumtrapz(t,xa);
    % обратная связь:
    x = xii + normrnd(0,1,[1,N]);
end
 
figure
% считаем плотность на выходе
[yn xn] = hist(xii,50);
yn = yn/(N*(xn(2)-xn(1)));
subplot(2,1,1);plot(t,xii)
title('Процесс на выходе')
subplot(2,1,2);plot(xn,yn)
title('Плотность распределения')



Еще как вариант, можно сделать гибридное интегрирование:
интегрировать численно, получать отсчеты первообразной, а затем при помощи интерполяции создавать функцию для подстановки других аргументов
аля...
Matlab M
1
2
3
4
5
6
7
8
9
10
clear, clc
 
dt = 0.1;
t = -10:dt:10;
 
w = normpdf(t,0,1);
F = cumtrapz(t,w); % отсчеты первообразной
fx = @(x) spline(t,F, x); % функция вычисления по отсчетам
a = @(x) fx(x/dt)/dt; % подставляем другие аргументы
fplot(a,[-1 1])
2
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.12.2014, 17:43
Ответы с готовыми решениями:

Как посчитать интеграл от - бесконечности до x0 и от x0 до +бесконечности
Проблема: Warning: Infinite or Not-a-Number function value encountered. &gt; In quad at 100 Warning: Infinite or Not-a-Number...

Интеграл до бесконечности, какую функцию выбрать
Снова здрасти, помогите с выбором пожалста: 1. Для примера создаю файл-функцию: function f = fun(x) f=@(x) (exp(-x.^2)); end ...

Значение бесконечности
Как задается Значение бесконечности в MATLAB?

38
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 32
13.02.2015, 02:01  [ТС]
Зосима, здравствуйте. Опять Вас беспокоит бестолковый студент))

дело в том, что вообще, согласно данной мне схеме, на выходе должно получиться следующее распределение (разные кривые для разных моментов времени). Т.е. должен получиться почти что гауссовский процесс.
Миниатюры
Интеграл от бесконечности  
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
16.02.2015, 09:18
Какие могут быть гаусы, если там интегрирование и ограничение?
0
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 32
17.02.2015, 01:01  [ТС]
Зосима, вернее не гауссовский, а Рэлея, или Райса, прошу прощения. Так считает мой научный руководитель (предмет: теория электрической связи). Как я понимаю, ограничитель увеличивает дисперсию и мат. ожидание. Для случая ненулевого мат ожидания на входе, на выходе они должны получиться похожими на следующие:

но пока что получаются совершенно не похожими на нужный результат(
Миниатюры
Интеграл от бесконечности  
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,243
17.02.2015, 01:45
Цитата Сообщение от pirozhok Посмотреть сообщение
но пока что получаются совершенно не похожими на нужный результат
Сформулируйте свой вопрос,так чтобы его можно было понять.
У вас есть результат,но он не соответствует полученному другим,заведомо правильным способом?
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
17.02.2015, 12:52
pirozhok, релей/райс получается если взять модуль от гауса
А интеграл? Интеграл это вообще число, взвешенная сумма отсчетов, которая у гаусса стремится к мат.ожиданию, т.е. в данном случае нулю
0
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 32
18.02.2015, 01:15  [ТС]
S_el, мне необходимо в Матлабе реализовать выражения:

https://www.cyberforum.ru/cgi-bin/latex.cgi?px(x)=normpdf(x,0,1)<br />
<br />
integrator1(x) = px(x/dt)/dt<br />
<br />
ampogr(x) = \begin{cases}<br />
 & \text{ if x<-l} \; ampogr(x)=0  \\ <br />
 & \text{ if x=-1} \; ampogr(x)=\int_{-\propto }^{-U1} integrator1(x)dx\times \delta(x+l)  \\ <br />
 & \text{ if -1<x<1}\;  ampogr(x)=a(x\times U1/ (l a2 dt) )\times U1/ (l a2 dt)  \\ <br />
 & \text{ if x=1}\;  ampogr(x)=\int_{U1}^{\propto} integrator1(x)dx\times \delta(x+l)  \\ <br />
 & \text{ if x>1} \; ampogr(x)=0  <br />
\end{cases}<br />
<br />
integrator2(x)=ampogr(x/ a2dt)/ a2dt

https://www.cyberforum.ru/cgi-bin/latex.cgi?a(x)=(px2(x/ dt))/ dt<br />
b(x)=(px (x/ U2dt))/ U2dt<br />
c(x)=\int_{-\propto }^{\propto } integrator2 (z+x)\times a(x)<br />
integrator1(x)=\int_{-\propto }^{\propto } b(z+x)\times c(z)dz<br />
<br />
ampogr(x) = \begin{cases}<br />
 & \text{ if x<-l} \; ampogr(x)=0  \\ <br />
 & \text{ if x=-1} \; ampogr(x)=\int_{-\propto }^{-U1} integrator1(x)dx\times \delta(x+l)  \\ <br />
 & \text{ if -1<x<1}\;  ampogr(x)=a(x\times U1/ (l a2 dt) )\times U1/ (l a2 dt)  \\ <br />
 & \text{ if x=1}\;  ampogr(x)=\int_{U1}^{\propto} integrator1(x)dx\times \delta(x+l)  \\ <br />
 & \text{ if x>1} \; ampogr(x)=0  <br />
\end{cases}<br />
d(x)=\int_{-\propto }^{\propto } ampogr(x-z)\times ampogr(z)dz<br />
e(x)=(ampogr (x/ a1dt))/ a1dt<br />
integrator2 = \int_{-\propto }^{\propto } d(z+x)\times e(x)dz<br />

l, a1, a2, U1, U2 - константы

Эти выражения обозначают следующую систему: интегратор, ограничитель, интегратор (система на рисунке). На выходе должны получиться кривые Рэлея или Райса...или что-то на них похожее. Зосима, к сожалению, при запуске Вашего кода получается что-то очень далёкое от нужного. Зосима, поясните, пожалуйста, почему мы используем normrnd, а не normpdf?
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
18.02.2015, 10:05
Цитата Сообщение от pirozhok Посмотреть сообщение
почему мы используем normrnd, а не normpdf?
смотри в сюда:
Цитата Сообщение от Зосима Посмотреть сообщение
я же предлагаю такой вариант: сгенерировать выборку случ.чисел (шум), пропустить его через интегратор, ограничитель и интегратор, потом просуммировать результат с исходным шумом и еще раз пропустить через элементы т.е. сделать обратную связь
0
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 32
21.02.2015, 10:39  [ТС]
Зосима, поясните,пожалуйста, зачем нам строчка

yn = yn/(N*(xn(2)-xn(1)));
?

Получается, мы в данном коде

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
clear, clc
 
% шум на входе:
N = 100000; % длинна выборки
x = normrnd(0,1,[1,N]);
t = linspace(0,1,N);
 
% считаем плотность на входе
[yn xn] = hist(x,50);
yn = yn/(N*(xn(2)-xn(1)));
subplot(2,1,1);plot(t,x)
title('Процесс на входе')
subplot(2,1,2);plot(xn,yn)
title('Плотность распределения')
 
U1 = 1e-3; % уровень ограничения
for i = 1:5
    % интегратор 1
    xi = cumtrapz(t,x);
    % амплитудный ограничитель:
    xa = xi;
    xa(xa>U1)=U1;
    xa(xa<-U1)=-U1;
    % интегратор 2
    xii = cumtrapz(t,xa);
    % обратная связь:
    x = xii + normrnd(0,1,[1,N]);
end
 
figure
% считаем плотность на выходе
[yn xn] = hist(xii,50);
yn = yn/(N*(xn(2)-xn(1)));
subplot(2,1,1);plot(t,xii)
title('Процесс на выходе')
subplot(2,1,2);plot(xn,yn)
title('Плотность распределения')
работаем с величиной на выходе каждого блока, а потом считаем её ПРВ (плотность распределения вероятности)?
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
21.02.2015, 13:49
Такой записью я из гистограммы (количество чисел попавших в интервал) получаю плотность вероятности (вероятность на единицу входной величины)

Совершенно верно, я пропускаю случайные числа через блоки и рассчитываю ПРВ на выходе каждого
затем результат на последнем выходе я подаю на вход (а точнее прибавляю к свежим входным данным), т.е. делаю обратную связь (правда я только заметил, что она отрицательная, но исправить плюс на минус дело не сложное)

Кстати, недвно узнал, что промоделировать переходную ф-цию вида

https://www.cyberforum.ru/cgi-bin/latex.cgi?Y = \frac{1}{z + U_1}

можно с помощью функции filter:
Matlab M
Sin = randn(1,100); % входной сигнал
num = 1; % коэф-ты числителя
den = [1, U1]; % коэф-ты знаменателя
Sout = filter(num, den, Sin); % сигнал на выходе
% или Sout = filter(den, num, Sin);
1
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
25.02.2015, 15:26
Вот бы иметь значения всех констант
0
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 32
25.02.2015, 17:46  [ТС]
Зосима, константы руководителем не заданы...
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
25.02.2015, 17:50
pirozhok, а как же тогда считать?
0
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 32
25.02.2015, 18:11  [ТС]
Зосима, руководитель никаких указаний по этому поводу не давал Поэтому у меня везде пока единички.
1. Думаешь, форма кривых будет меняться в зависимости от коэффициентов?
2. А если попытаться построить график на выходе для каждого из 5-ти интервалов времени - верно ли я изменила код?

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
for i = 1:5
    % интегратор 1
    xi = cumtrapz(t,x);
    % амплитудный ограничитель:
    xa = xi;
    xa(xa>U1)=l;
    xa(xa<-U1)=-l;
    % интегратор 2
    xii = cumtrapz(t,xa);
    % обратная связь:
    x = xii - normrnd(0,1,[1,N]);
    [yn xn] = hist(x,50);
    yn = yn/(N*(xn(2)-xn(1)));
    % строим графики
    grid on
    subplot(1,5,i);plot(xn,yn)
    end
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
25.02.2015, 20:56
Солнце, там вместо cumtrapz должно быть filter как в этом сообщении: https://www.cyberforum.ru/post7254557.html

а плотность вероятности результата лучше строить не с помщью hist, а функции ksdensity будет проще и красивей!

Добавлено через 2 часа 30 минут
*еще систему можно промоделировать с помощью tf и lsim:

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
clear, clc
% шум на входе:
N = 100000; % длинна выборки
x = normrnd(0,1,[N,1]);
t = linspace(0,1,N);
 
% считаем плотность на входе
[yn xn] = ksdensity(x);
subplot(2,1,1);plot(t,x)
title('Процесс на входе')
subplot(2,1,2);plot(xn,yn)
title('Плотность распределения')
 
U1 = 1; % уровень ограничения
U2 = 0.5;
U3 = 1;
L = 1.5;
Y3 = tf(1,[1, U2]);
Y1 = tf(1,[1, U3]);
figure
for i = 1:5
    % интегратор 1
    xi = lsim(Y3,x,t);
    % амплитудный ограничитель:
    xa = xi;
    xa(xa>U1)= L;
    xa(xa<-U1) = -L;
    % интегратор 2
    xii = lsim(Y1,xa,t);
    % обратная связь:
    x = normrnd(0,1,[N,1]) - xii;
    [yn xn] = ksdensity(x);
    % строим графики
    subplot(1,5,i);
    plot(xn,yn)
    grid on
end
1
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 32
25.02.2015, 20:56  [ТС]
Зосима, в итоге у меня получается следующий код. Только вот правильно ли здесь использовать randn?...

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
clear, clc
U2 = 0.001;
U1 = 0.001; 
l=10;
a1=1; 
a2=0.1;
% процесс на входе:
x = randn(1,100);
[f, xj] = ksdensity(x);
plot(xj, f,'Color','b','LineWidth',3, 'LineStyle', '.');
title('Плотность распределения процесса на входе и выходе');
% пропускаем через систему:
for i = 1:5
    % интегратор 1
    num = 1; % коэф-ты числителя
    den = [1, U1]; % коэф-ты знаменателя
    xi = filter(num, den, xj);
    % амплитудный ограничитель:
    xa = xi;
    xa(xa>U1)=l;
    xa(xa<-U1)=-l;
    % интегратор 2
    num = a1; % коэф-ты числителя
    den = [1, a2]; % коэф-ты знаменателя
    xii = filter(num, den, xa);
    % обратная связь:
    x = xii - randn(1,100);
    [g, xo] = ksdensity(x);
    % строим графики
    grid on
    hold on
    if i==1 plot(xo,g,'Color','r','LineWidth',3);
    elseif i==2 plot(xo,g,'Color','b','LineWidth',2.5);
    elseif i==3 plot(xo,g,'Color','y','LineWidth',2);
    elseif i==4 plot(xo,g,'Color','g','LineWidth',1.5);
    else plot(xo,g,'Color','b','LineWidth',0.5);
    end;
    end
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
25.02.2015, 20:59
pirozhok, твой вариант мне больше нравится
0
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 32
26.02.2015, 00:17  [ТС]
А вообще, могут ли, теоретически, на выходе данной системы получиться кривые Рэлея или Райса?

Добавлено через 46 минут
Просто на выходе, согласно мнению науч. рук-ля, должны получиться именно Рэлей или Райс, а тут ими и не пахнет(
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
26.02.2015, 08:18
Райс и Релей получаются там, где есть операция "модуль" или на худой конец "квадрат", чтобы не было отрицательной части
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.02.2015, 08:18

Задать промежуток от -pi до бесконечности
Собственно для построения графика в матлаб, как это осуществить? пробовал x1 = - не катит(

Максимум и минимум отличный от бесконечности и нуля
Как найти значения матрицы где её максимальный и минимальные значения отличный от бесконечности и нуля

Как доказать, что тот же интеграл от минус бесконечности до бесконечности равен sqrt(pi/2)
Интеграл от нуля до бесконечность sin(x^2) dx = 1/2 sqrt (pi/2) Как доказать , что тот же интеграл от минус бесконечности до...

интеграл от 50 до плюс бесконечности
надо найти этот интеграл. мне самое решение очень нужно \int_{50}^{+\propto }\frac{5000}{{x}^{2}} dx

определить к чему сходится интеграл от 0 до бесконечности
как мне определить к чему сходится интеграл от 0 до бесконечности вот функция 1/sqrt(pow(t,4)+1)


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

Или воспользуйтесь поиском по форуму:
39
Ответ Создать тему
Новые блоги и статьи
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи. . . .
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru