• Регистрация
Cav212
Cav212 0.00
н/д

Перенос спектра в Матлаб

03.11.2021

Добрый день! Возникли проблемы и недопонимание с происходящим) Смоделировал сигнал:

nSamples = 1000;     % число отсчетов
sampleRate = 10e9;      % частота дискретизации
f0 = 1e9;               % 1 GHz
f_dev = 0,1;             % 1e6; % 10 Mhz
V_0 = 1;                % амплитуда
a_dev = 0.01;            % 0.1;
phi_0 = 0;               % начальная фаза

t =(1:nSamples)'/sampleRate;
Signal = V_0*(1+randn(nSamples,1)*a_dev).*cos(phi_0+2*pi*(f0+randn(nSamples,1)*f_dev).*t);

Signal_0 = Signal.*exp(1i*2*pi*f0*time); % снос на нулевую частоту

L = size(Signal,1);          % размер массива сигнала
NFFT = L;               % перенаименование переменной размера массива
if(mod(NFFT,2)==1)      % проверка условия деление по модулю 2 (если нечетное число, то добавляем одну единицу)
    NFFT = NFFT+1;
end

FFT = fft(Signal,NFFT,1)/L;                % БПФ от сигнала по размеру NFFT с делением на общую длину (нормировка по уровню)
f = Fs/2*linspace(0,1,NFFT/2+1)';          % вычисление массива частот в линейном масштабе
P = 2*abs(FFT(1:floor(NFFT/2+1),:));       % построение спектра для массива с 1 по 2561 элемент
df = f(2)-f(1);                            % вычисление разрешения по частоте
xlog = 10*log10(x);                        % логарифм по мощности от модуля значений сигнала
xlog = xlog - max(xlog);                   % нормируем логарифм по максимальному значению
plot(f,xlog);

Вопросы:

1. по этой строчке Signal_0 = Signal.*exp(1i*2*pi*f0*time); % снос на нулевую частоту. Получается,что просто частота удваивается и все, а не сносится в ноль?

2. необходимо построить спектр одиночной боковой полосы (правой). так чтобы несущая была на нулевой частоте и вправо уходила отстройка частоты от несущей.

3.  как узнать разрешение по частоте после БПФ?

Грубо говоря: хочу получть из этой картинки

Хочу получить из этого

Вот такую

Теги

    03.11.2021

    Ответы

    • aBoomest
      aBoomest+942.89
      3.11.2021 17:07

      1. по этой строчке Signal_0 = Signal.*exp(1i*2*pi*f0*time); % снос на нулевую частоту. Получается,что просто частота удваивается и все, а не сносится в ноль?

      Думаю стоит подробнее почитать про это

      3.  как узнать разрешение по частоте после БПФ?

      Расстояние между двумя соседними точками.

      UPD: Какая-то у Вас откровенная каша в коде. Даже переменные в начале так называются в конце иначе. Это явно что-то не работоспособное.

      Что делается этой стрчкой f_dev = 0,1 понять  . . . . .