Перейти к содержанию
    

Спектр ЛЧМ в Matlab через fft

Добрый день. Столкнулся с такой проблемой- пытаюсь получить спектр ЛЧМ сигнала, но вместо спектра на заданной несущей частоте и вместо ширины спектра равной заданной частоте девиации, получаю спектр схожей формы, но на других частотах. Ниже приведен код:

 

ts=70*10^-6;
f0=10*10^6;
dfs=1*10^6; 
A0=1; 
fn=f0-dfs/2; 
fv=f0+dfs/2; 
wn=2*pi*fn;
w0=2*pi*f0;
fi0=0; 
b0=2*pi*dfs/ts; 
k=2; 
dt=1/(k*(2*fv)); 
Fd=1/dt;
N=round(ts/dt); 
N2=2^nextpow2(N); 
dt=ts/N2; 
t=0:dt:dt*(N2-1); 
S=A0*cos(wn*t+0.5*b0*t.^2+fi0);
FftS=abs(fft(S,N2));
F=0:Fd/N2:Fd/2-Fd/N2;
plot(F,FftS(1:length(F)));

 

Не могу понять в чем ошибка?

 

Заранее спасибо за помощь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день. Столкнулся с такой проблемой- пытаюсь получить спектр ЛЧМ сигнала, но вместо спектра на заданной несущей частоте и вместо ширины спектра равной заданной частоте девиации, получаю спектр схожей формы, но на других частотах. Ниже приведен код:

 

ts=70*10^-6;
f0=10*10^6;
dfs=1*10^6; 
A0=1; 
fn=f0-dfs/2; 
fv=f0+dfs/2; 
wn=2*pi*fn;
w0=2*pi*f0;
fi0=0; 
b0=2*pi*dfs/ts; 
k=2; 
dt=1/(k*(2*fv)); 
Fd=1/dt;
N=round(ts/dt); 
N2=2^nextpow2(N); 
dt=ts/N2; 
t=0:dt:dt*(N2-1); 
S=A0*cos(wn*t+0.5*b0*t.^2+fi0);
FftS=abs(fft(S,N2));
F=0:Fd/N2:Fd/2-Fd/N2;
plot(F,FftS(1:length(F)));

 

Не могу понять в чем ошибка?

 

Заранее спасибо за помощь.

 

Выделил участи кода, на которые надо обратить внимание:)

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Самурай, огромное Вам спасибо за подсказку)) Может кому-то еще пригодится верный вариант кода:

 

ts=100*10^-6;
f0=10*10^6;
dfs=10*10^6; 
A0=1; 
fn=f0-dfs/2; 
fv=f0+dfs/2; 
wn=2*pi*fn;
fi0=0; 
b0=2*pi*dfs/ts; 
k=2; 
dt=1/(k*(2*fv)); 
Fd=1/dt;
N=round(ts/dt); 
N2=2^nextpow2(N); 
t=0:dt:ts-dt; 
S=A0*cos(wn*t+0.5*b0*t.^2+fi0);
FftS=abs(fft(S,N2));
F=0:Fd/N2:Fd/2-Fd/N2;
plot(F,FftS(1:length(F)));

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ts=100*10^-6;
f0=10*10^6;
dfs=10*10^6; 
A0=1; 
fn=f0-dfs/2; 
fv=f0+dfs/2; 
wn=2*pi*fn;
fi0=0; 
b0=2*pi*dfs/ts; 
k=2; 
dt=1/(k*(2*fv)); 
Fd=1/dt;
N=round(ts/dt); 
N2=2^nextpow2(N); 
t=0:dt:ts-dt; 
S=A0*cos(wn*t+0.5*b0*t.^2+fi0);
FftS=abs(fft(S,N2));
F=0:Fd/N2:Fd/2-Fd/N2;
plot(F,FftS(1:length(F)));

Что означает эта строчка из этой программы?

N2=2^nextpow2(N);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возведение 2 в степень, которая определяется как

P = nextpow2(A) returns the exponents for the smallest powers of two that satisfy

2pA

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...