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