Добрый день.
Изучая БПФ столкнулся с вопросом, ответ на который не могу найти самостоятельно.
Из DSP библиотеки для микроконтроллеров Nuvoton взят пример работы с функциями FFT.
В примере взят исходный сигнал - несущая 10КГц + белый шум.
Сигнал представляет собой вектор из 2048 чисел-выборок с частотой дискретизации 100КГц
Я промоделировал это пример в MATLAB.
После выполнения FFT вижу четыре зеркальных спектра вместо двух (информация из теоретических источников, что результатом БПФ есть два зеркальных спектра)
Окно преобразования берется 1024 отсчета исходного сигнала.
Файл-скрипт MATLAB прилагаю.
Подскажите, что сделано не верно?
FFT, Интерпретация результата преобразования
FFT, Интерпретация результата преобразования
- Вложения
-
- Untitled_nuv_exem_signal.zip
- (10.71 КБ) 665 скачиваний
Последний раз редактировалось Seges 29 мар 2015, 15:03, всего редактировалось 1 раз.
- Santik
- Сообщения: 609
- Зарегистрирован: 28 дек 2010, 08:04
- Откуда: Мирный (Якутия)
- Контактная информация:
Re: FFT, Интерпретация результата преобразования
Я не очень понял: входной вектор комплексный?Seges писал(а): В примере взят исходный сигнал - несущая 10КГц + белый шум.
Сигнал представляет собой вектор из 2048 комплексных чисел-выборок с частотой дискретизации 100КГц
Re: FFT, Интерпретация результата преобразования
Добрый день.
Заметил ошибку в первом сообщении, спасибо, исправил.
Исходно есть массив из 2048 точек преобразования АЦП с частотой дискретизации 100КГц.
Значения в массиве абсолютные.
Заметил ошибку в первом сообщении, спасибо, исправил.
Исходно есть массив из 2048 точек преобразования АЦП с частотой дискретизации 100КГц.
Значения в массиве абсолютные.
- Santik
- Сообщения: 609
- Зарегистрирован: 28 дек 2010, 08:04
- Откуда: Мирный (Якутия)
- Контактная информация:
Re: FFT, Интерпретация результата преобразования
Я в данных никаких "криминалов" не заметил.
Вот спектр:
Вот спектр:
Re: FFT, Интерпретация результата преобразования
Ваш спектр прям один-в-один из примера.
Можете выложить скрипт MATLAB?
Можете выложить скрипт MATLAB?
- Santik
- Сообщения: 609
- Зарегистрирован: 28 дек 2010, 08:04
- Откуда: Мирный (Якутия)
- Контактная информация:
Re: FFT, Интерпретация результата преобразования
Матлаба нет у меня и не предвидится
Fd=100000;
Ts=1024;
FftSig=abs(fft(Nuv_exam_signal,Ts));
% FftSig=FftSig(1:256); % Вот это что? Это 256 значений FFT? Почему не 1024
% FftSig=2*FftSig./Ts; % Нормировка спектра по амплитуде
% FftSig(1)=FftSig(1)/2; % Нормировка постоянной составляющей в спектре
% fftshift(512); % Это тоже не понятно что процедура делает
% Fh=0:Fd/Ts:Fd/2-1/Ts;
% plot(Fh,FftSig(1:length(Fh)));

Fd=100000;
Ts=1024;
FftSig=abs(fft(Nuv_exam_signal,Ts));
% FftSig=FftSig(1:256); % Вот это что? Это 256 значений FFT? Почему не 1024
% FftSig=2*FftSig./Ts; % Нормировка спектра по амплитуде
% FftSig(1)=FftSig(1)/2; % Нормировка постоянной составляющей в спектре
% fftshift(512); % Это тоже не понятно что процедура делает
% Fh=0:Fd/Ts:Fd/2-1/Ts;
% plot(Fh,FftSig(1:length(Fh)));
Re: FFT, Интерпретация результата преобразования
Все, что ниже третьей строки - замаркированно как комментарий. Не участвует в выполнении.
Это были попытки подогнать результат под ответ, что бы понять, что не так.
Ничего не помогло.
Спектр выводится на график по данным массива FftSig после БПФ и взятия абсолютных значений - в третьей строке.
А где выполняли расчет и получили спектр?
Это были попытки подогнать результат под ответ, что бы понять, что не так.
Ничего не помогло.
Спектр выводится на график по данным массива FftSig после БПФ и взятия абсолютных значений - в третьей строке.
А где выполняли расчет и получили спектр?
- Santik
- Сообщения: 609
- Зарегистрирован: 28 дек 2010, 08:04
- Откуда: Мирный (Якутия)
- Контактная информация:
Re: FFT, Интерпретация результата преобразования
Написал программу на Фортране и результаты нарисовал в ExcelSeges писал(а):А где выполняли расчет и получили спектр?


Re: FFT, Интерпретация результата преобразования
Понял, спасибо.
У вас спектр такой как и должен быть.
Может кто-то пользуется MATLAB и мой скрипт проверит?
У вас спектр такой как и должен быть.
Может кто-то пользуется MATLAB и мой скрипт проверит?