Исследование стохастических процессов. Смесь гармонического сигнала и шума. Математическое ожидание сгенерированного процесса, страница 2

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

[psdNoisySig, f] = pwelch(noisySig, ones(1, N/8), 0, N/8, fd);

figure('Name', sprintf('Спектральная плотность мощности - %s', name));

subplot(2, 1, 1);

plot(f, psdNoisySig);

title(sprintf('СПМ - %s, %s = %2.4f Гц', name, '\Deltaf', 8*fd/N));

grid on;

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

ylabel('СПМ, Вт/Гц');

xlim([f(1) f(end)]);

subplot(2, 1, 2);

semilogy(f, psdNoisySig);

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

ylabel('СПМ, Вт/Гц');

xlim([f(1) f(end)]);

ylim([min(psdNoisySig) max(psdNoisySig)]);

end;

Функция  analysisNoise

function [] = analysisNoise(noise, fd, name)

%Анализ шума

N = size(noise, 2);

t = (0:N - 1)/fd;

%Вывод шума

figure('Name', name);

subplot(1, 2, 1);

plot(t, noise);

title(name);

xlabel(sprintf('Время, с (c %2.4f по %2.4f)', t(1), t(floor(end/4))));

ylabel('Шум, В');

xlim([t(1) t(floor(end/4))]);

subplot(1, 2, 2);

hist(noise);

title(sprintf('Гистограмма распределения - %s', name));

xlabel('Величина отсчета, В');

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

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

ftNoise = fft(noise - mean(noise))/N;

ftNoise = ftNoise(1:fix(N/2) + 1);

realFtNoise = 2*real(ftNoise);

imagFtNoise = 2*imag(ftNoise);

ampFtNoise = 2*abs(ftNoise);

psdFtNoise = 2*ftNoise.*conj(ftNoise)/fd;

f = fd/N*(0:(N/2));

figure('Name', sprintf('Спектральные характеристики, без усреднения - %s (центрированный)', name));

subplot(2, 2, 1);

plot(f, realFtNoise);

title('Действительная часть комплексного спектра');

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

ylabel('Спектр, В');

axis([f(1) f(end) min(realFtNoise) max(realFtNoise)]);

subplot(2, 2, 2);

hist(realFtNoise);

title('Гистограммы распределения компонент:');

xlabel('Величина компоненты, В');

ylabel('Количество компонент');

subplot(2, 2, 3);

plot(f, imagFtNoise);

title('Мнимая часть комплексного спектра');

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

ylabel('Спектр, В');

axis([f(1) f(end) min(imagFtNoise) max(imagFtNoise)]);

subplot(2, 2, 4);

hist(imagFtNoise);

xlabel('Величина компоненты, В');

ylabel('Количество компонент');

figure('Name', sprintf('Спектральные характеристики, без усреднения - %s (центрированный)', name));

subplot(4, 2, 1);

plot(f, ampFtNoise);

title('Амплитудный спектр');

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

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

axis([f(1) f(end) min(ampFtNoise) max(ampFtNoise)]);

subplot(4, 2, 3);

semilogy(f, ampFtNoise);

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

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

xlim([f(1) f(end)]);

subplot(4, 2, [2, 4]);

hist(ampFtNoise);

title('Гистограммы распределения компонент:');

xlabel('Величина компоненты, В');

ylabel('Количество компонент');

subplot(4, 2, 5);

plot(f, psdFtNoise);

title(sprintf('СПМ, %s = %2.4f Гц', '\Deltaf', fd/N));

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

ylabel('СПМ, Вт/Гц');

axis([f(1) f(end) min(psdFtNoise) max(psdFtNoise)]);

subplot(4, 2, 7);

semilogy(f, psdFtNoise);

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

ylabel('СПМ, Вт/Гц');

xlim([f(1) f(end)]);

subplot(4, 2, [6, 8]);

hist(psdFtNoise);

xlabel('Величина компоненты, Вт/Гц');

ylabel('Количество компонент');

[psdNoise, f] = pwelch(noise - mean(noise), ones(1, floor(N/8)), 0, floor(N/8), fd);

ampNoise = sqrt(2*psdNoise*fd/N);

figure('Name', sprintf('Спектральные характеристики, c усреднением - %s (центрированный)', name));

subplot(4, 2, 1);

plot(f, ampNoise);

title('Амплитудный спектр');

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

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

xlim([f(1) f(end)]);

subplot(4, 2, 3);

semilogy(f, ampNoise);

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

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

xlim([f(1) f(end)]);

subplot(4, 2, [2, 4]);

hist(ampNoise);

title('Гистограммы распределения компонент:');

xlabel('Величина компоненты, В');

ylabel('Количество компонент');

subplot(4, 2, 5);

plot(f, psdNoise);

title(sprintf('СПМ, %s = %2.4f Гц', '\Deltaf', 8*fd/N));

grid on;

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

ylabel('СПМ, Вт/Гц');

xlim([f(1) f(end)]);

subplot(4, 2, 7);

semilogy(f, psdNoise);

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

ylabel('СПМ, Вт/Гц');

xlim([f(1) f(end)]);

subplot(4, 2, [6, 8]);

hist(psdNoise);

xlabel('Величина компоненты, Вт/Гц');

ylabel('Количество компонент');

end

Функция  analysisSigMod

function [] = analysisSigMod(sigMod, fm, fd, name)

%Анализ модулированного сигнала

N = size(sigMod, 2);

t = (0:N - 1)/fd;

%Вывод сигнала

figure('Name', name);

plot(t, sigMod);

title(name);

xlabel(sprintf('Время, с (c %2.4f по %2.4f)', t(1), t(floor(end/4))));

ylabel('Сигнал, В');

axis([t(1) t(floor(end/4)) min(sigMod) max(sigMod)]);

%Кратковременные спектральные характеристики

nShort = floor(fd*(1/4)/fm);

figure('Name', sprintf('Спектральная плотность мощности %sа', name));

for i = 1:3

[psdShortSigMod, f] = pwelch(sigMod(((i - 1)*nShort + 1):i*nShort), ones(1, nShort), 0, nShort, fd);

subplot(3, 2, 2*i - 1);

plot(f, psdShortSigMod);

title(sprintf('СПМ %sа (c %2.4f по %2.4f), %s = %2.4f Гц', name, t((i - 1)*nShort + 1), t(i*nShort), '\Deltaf', fd/nShort));

grid on;

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

ylabel('СПМ, Вт/Гц');

axis([f(1) f(end) min(psdShortSigMod) max(psdShortSigMod)]);

subplot(3, 2, 2*i);

semilogy(f, psdShortSigMod);

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

ylabel('СПМ, Вт/Гц');

xlim([f(1) f(end)]);

end;

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

[psdSigMod, f] = pwelch(sigMod, ones(1, N), 0, N, fd);

figure('Name', sprintf('Спектральная плотность мощности %sа', name));

subplot(2, 1, 1);

plot(f, psdSigMod);

title(sprintf('СПМ %sа, %s = %2.4f Гц', name, '\Deltaf', fd/N));

grid on;

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

ylabel('СПМ, Вт/Гц');

xlim([f(1) f(end)]);

subplot(2, 1, 2);

semilogy(f, psdSigMod);

grid on;

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

ylabel('СПМ, Вт/Гц');

xlim([f(1) f(end)]);

%Мощность

fprintf('Математическое ожидание %sа : %5.4f\n', name, mean(sigMod));

fprintf('Дисперсия %sа : %5.4f\n', name, cov(sigMod));

fprintf('Суммарная мощность %sа : %5.4f\n', name, mean(sigMod)^2 + cov(sigMod));

fprintf('Мощность %sа, найденная по СПМ : %5.4f\n', name, sum(psdSigMod)*(fd/N));

end