2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 можно ли в матлабе задать шум в виде непрерывной функции?..
Сообщение22.03.2010, 13:41 
Я знаю, что есть команда rand, но это немного не то: она формирует вектор, а не функцию.
А мне нужно переменную, содержающую шум, вставить в диф. уравнение (ode45).

Поясню, если не совсем понятно выражаюсь. Допустим, имеем функцию
x = @(t) sin(t)
которую мы вставляем в неоднородное диф. уравнение (вроде типа: y''(t) + y' + x(t) = 0)
Потом мне надо записать x(t) в виде
x = @(t) sin(t) + r(t),
где r(t) - это функция, описывающая "белый" шум. Вопрос, как ее задать? Вообще реально ли это? Если нет, то тогда может есть возможность решать дифуры, в которых известные функции задаются в виде таблицы?...

 
 
 
 Re: можно ли в матлабе задать шум в виде непрерывной функции?..
Сообщение29.03.2010, 15:21 
Matlab работает с дискретными сигналами.
Но у него есть toolbox SIMULINK, все что касается непрерывных сигналов это туда.

 
 
 
 Re: можно ли в матлабе задать шум в виде непрерывной функции?..
Сообщение30.03.2010, 08:57 
spyphy в сообщении #300817 писал(а):
где r(t) - это функция, описывающая "белый" шум. Вопрос, как ее задать?

Так и задавайте:
Используется синтаксис Matlab M
function y=r(x);
y=0.003 * rand(size(x));

А лучше randn.

 
 
 
 Re: можно ли в матлабе задать шум в виде непрерывной функции?..
Сообщение16.04.2010, 20:02 
)) в этом что-то есть... Код действительно работоспособный. Но все же выглядит это дело как-то страннова-то. Ведь конструкция в таком виде вставляется в функцию ODE45 еще до того, как определен размер вектора t. И о том, что происходит внутри команды ODE45, можно только гадать... какая-то уж слишком запутанная многоуровневая абстрация получается..

 
 
 
 Re: можно ли в матлабе задать шум в виде непрерывной функции?..
Сообщение05.05.2010, 20:22 
В GNU Octave (аналог Matlab) я генерировал приближение к частотно-ограниченному белому шуму, как сумму синусов со случайными фазами.
Вот код:


Код:
   ## -*- texinfo -*-
   ## @deftypefn {Function File} {@var{out}=} noise (@var{t}, @var{phi})
   ##
   ## Generates the periodical noise signal as sum of sine waves with equal
   ## amplitudes, but random phases. Number of waves are calculated from
   ## length of @var{phi} vector. Noise period are equal to 2*pi.
   ## 
   ## @end deftypefn
   
   function OUT = noise (t, phi)
     temp = 1/2;
     N = length (phi);
     for i = 1:N
       temp = temp .+ 1.*sin(i.*t .+ phi(i));
     endfor
     OUT = temp;
   endfunction


Второй аргумент у функции noise это вектор случайных чисел, равномерно распределённых от нуля до двух пи радиан. В самом начале вашей программы нужно создать вектор случайных фаз, а потом вызывать с ним noise вот так:

Код:
@(t) noise (t, phi);
fplot (@(t) noise (t, phi), [0 2*pi]);


Ширина спектра задаётся с помощью размера вектора случайных фаз, сколько в нём членов, столько и гармоник.

 
 
 
 Re: можно ли в матлабе задать шум в виде непрерывной функции?..
Сообщение17.05.2012, 18:36 
y = awgn(x,snr)

Добавляет белый гауссов шум к вектору сигнала x. Скаляр snr задает отношение сигнал/шум в децибелах. Если значения x являются комплексными, функция awgn добавляет комплексный шум. При этом предполагается, что мощность сигнала x равна 0 дБ.

 
 
 [ Сообщений: 6 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group