%Спектральные характеристики
[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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.