Исследование стохастических процессов. Важные параметры в моделировании процессов, страница 2

%  processSignal(modulatedFrequencySignal, fs ,fd, N, dt, tBeg, tEnd, df, t, 'частотно модулированный сигнал');

%  partialProcess(modulatedFrequencySignal, fs ,fd, N, dt, tBeg, tEnd, df, t, 'частотно модулированный сигнал');

%%%%%%%%%%%%%%%%%%%%%%%%%NOISE%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

sigma = 3

whiteNoise = noizeAmplitude + sqrt(sigma) * rand(1,N+1);   % Равномерный шум

gausNoise = noizeAmplitude + sqrt(sigma) * randn(1,N+1);   % гаусов шум

meanWhite = mean(whiteNoise)                                %матожидание

covWhite = cov(whiteNoise)                                 %дисперсия

meanGaus = mean(gausNoise)                               %матожидание

covGaus = cov(gausNoise)                                 %дисперсия

whiteNoise = whiteNoise - meanWhite;                       %центрируем

gausNoise = gausNoise - meanGaus;                          %центрируем

% processSignal(whiteNoise, fs ,fd, N, dt, tBeg, tEnd, df, t, 'Равновероятный шум');

%  processNoise(whiteNoise, fs ,fd, N, dt, tBeg, tEnd, df, t, 'Равновероятный шум');

% hist(whiteNoise);

% xlabel('Интервалы');

% ylabel('Количество');

% figure;

% hist(gausNoise);

% xlabel('Интервалы');

% ylabel('Количество');

% processSignal(gausNoise, fs ,fd, N, dt, tBeg, tEnd, df, t, 'Гаусов шум');

% processNoise(gausNoise, fs ,fd, N, dt, tBeg, tEnd, df, t, 'Гаусов шум');

signalNoize = 0; % в децибеллах

signalWithNoise = AWGN(harmonySignal, signalNoize);

processSignal(signalWithNoise, fs ,fd, N, dt, tBeg, tEnd, df, t, 'Сигнал с шумом');

hist(signalWithNoise);

файл  partialProcess.m

function [  ] = partialProcess( signal, fs ,fd, N, dt, tBeg, tEnd, df, t, signalName)

partToDraw = 100;   % Число отсчетов

partOne = signal((1 : partToDraw) + 50);     %частичная реализация со сдвигом относительно начала процесса

partTwo = signal((1 : partToDraw) + 120);    %частичная реализация со сдвигом относительно начала процесса

partThree = signal((1 : partToDraw) + 311);  %частичная реализация со сдвигом относительно начала процесса

window = ones(partToDraw, 1); %окно

pwelch(partOne, window,0, partToDraw, fs);       %спектральная характеристика окна

figure;

pwelch(partTwo, window, 0, partToDraw, fs);       %спектральная характеристика окна

figure;

pwelch(partThree, window, 0, partToDraw, fs);     %спектральная характеристика окна

figure;

end

файл processNoise

function [  ] = processNoise( signal, fs ,fd, N, dt, tBeg, tEnd, df, t, signalName)

partToDraw = 100;   % Число отсчетов

%Спектральные характеристики

%     signalFFT = fft(signal, [], 2)/N;

%     signalFFT = signalFFT(:, 1:floor(N)/2 + 1);

%

partTime = N / fd;

partFrequency = 1 / partTime;

%

%     transform = signalFFT .* conj(signalFFT) / partFrequency;

%

%     frequency=(0 : floor(tEnd * fd) / 2) * partFrequency;

signalFFT=fft(signal)/N;

transform=fftshift(signalFFT);

frequency=(1-N/2:N/2)*partFrequency;

semilogy(frequency, abs(transform)); %спектр мощности

figure;

title('Модуль');

xlabel('Частота, Гц');

ylabel('Амплитуда, В');

hist(abs(transform));

figure;

%спектр амплитудный

semilogy(frequency, real(transform));

figure;

title('Действительная часть');

xlabel('Частота, Гц');

ylabel('Амплитуда, В');

hist(real(transform));

figure;

semilogy(frequency, imag(transform)); %спектр комплексный

figure;

title('Действительная часть');

xlabel('Частота, Гц');

ylabel('Амплитуда, В');

hist(imag(transform));

figure;

end

файл processSignal

function [  ] = processSignal( signal, fs ,fd, N, dt, tBeg, tEnd, df, t, signalName)

partToDraw = 100;   % Число отсчетов для отрисовки графиков

if(partToDraw > N )  

partToDraw = N;

end

plot(t(1:partToDraw), signal(1:partToDraw));

xlabel('Время,с');

ylabel('Амплитуда');

title(signalName);

figure;

covv = cov(signal)                           %Дисперсия сигнала

meann = mean(signal)                           %Математическое ожидание сигнала

power = covv + meann^2                 %Мощность сигнала

%Расчет  корреляционных характеристик

step = -tEnd : 1 / fd : tEnd;

corr=xcorr(signal);  

%      plot(step,corr(1,:));   % раскомментировать

title(signalName);

xlabel('Сдвиг по времени,с');

ylabel('Коэффициент корреляции');

figure;  

%Мощность сигналов по корреляционной функции

period = tEnd * fd + 1;

powerCorr = corr(:,period)/(period-1)             %Мощность сигналов по корреляционной функции

%Спектральные характеристики

signalFFT = fft(signal, [], 2)/N;

signalFFT = signalFFT(:, 1:floor(N)/2 + 1);

partTime = N / fd;

partFrequency = 1 / partTime;

transform = signalFFT .* conj(signalFFT) / partFrequency;

frequency=(0 : floor(tEnd * fd) / 2) * partFrequency;

grid on;

%     plot(frequency, 10*log(transform));

%     plot(frequency, transform);

for i=1:length(transform)

if transform(i)==0

transform(i)=0.00000000000000000000000000000000000000001;

end;

end;

semilogy(frequency, transform);

xlabel('Частота,Гц');

ylabel('Мощность/частота ');

grid on;

title('Спектральная плотность мощности');

figure;

spectrumPower = sum(2 * transform,2)*(1/tEnd)           %Мощность сигналов по спектральным характеристикам

end