реклама на сайте
подробности

 
 
> Окна БПФ
ViKo
сообщение Oct 2 2013, 12:55
Сообщение #1


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Хочу задать несколько разных оконных функций при вычислении БПФ в своем устройстве. И уже на треугольном озадачился. Возьмем для простоты БПФ по 8 точкам. Трегольное окно спадает от 1 в середине до 0 на краях. Какой отсчет будет умножен на 1 - 3-й, 4-й, оба, никакой? Ведь вершина треугольника попадает между отсчетами - слева 4 и справа 4. Понятно, что при 1024 точках это почти не важно, но все равно напрягает. Тот же вопрос распространяется и на все остальные окна.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ViKo
сообщение Oct 4 2013, 11:59
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Сделал, что мог. Использую Matlab. Окна по умолчанию получаются симметричными, что мне нравится. Результат расчетов выводится в файл, который включу в проект. Только запятую лишнюю в конце каждого массива нужно удалить.
Код
FFT_N = 8;
WindHann = hann(FFT_N);
WindHamm = hamming(FFT_N);
WindBart = bartlett(FFT_N);

fid = fopen('FFT_Windows.h', 'w');

fprintf(fid, '/* Hann Window */\n');
fprintf(fid, 'static const float WindHann[] = {\n');
fprintf(fid, '  %E, %E, %E, %E,\n', WindHann);
fprintf(fid, '};\n\n');

fprintf(fid, '/* Hamming Window */\n');
fprintf(fid, 'static const float WindHamm[] = {\n');
fprintf(fid, '  %E, %E, %E, %E,\n', WindHamm);
fprintf(fid, '};\n\n');

fprintf(fid, '/* Bartlett Window */\n');
fprintf(fid, 'static const float WindBart[] = {\n');
fprintf(fid, '  %E, %E, %E, %E,\n', WindBart);
fprintf(fid, '};\n\n');

fclose(fid);
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Oct 4 2013, 13:27
Сообщение #3


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Можно отказаться от правильного использования MATLAB и сделать явный цикл по выводу каждого элемента массива или в строку нескольких элементов. И проверку на открытие файлов лучше делать.

Рабочий порезаный пример вывода:
CODE

clc
clear

DataLength = 64;

fdirstr = 'C:\\tmp\\';
filestr = 'data';
fileextstr = '.h';

datafname = strcat(fdirstr,filestr,fileextstr);
[fid1,message] = fopen(datafname,'w');
if fid1 == -1
errordlg(message,'FILE OPEN ERROR');
else
fprintf(fid1,'/***********************************************************/');
fprintf(fid1,'\n/* Date: %s*/',datestr(now,0));
fprintf(fid1,'\n/***********************************************************/\n');
str = strcat(filestr,'_H_');
fprintf(fid1,'\n#ifndef %s',upper(str));
fprintf(fid1,'\n#define %s\n',upper(str));

fprintf(fid1,'\nconst uint32_t data[%i] = \n\t{',DataLength);
for i=1:DataLength
% здесь вывод того, что требуется, для примера поэлементно.
fprintf(fid1,'\n\t\t0x%04X',i);
% немного сложнее будет с расчетом необходимых индексов и форматом при выводе нескольких элементов массива в одной строке
if i ~= DataLength
fprintf(fid1,',');
end
end
fprintf(fid1,'\n\t};\n\n');
fprintf(fid1,'#endif /* %s */\n',upper(str));
end

if fid1 ~= -1
status = fclose(fid1);
if status == -1
errstr = strcat('Can not close file: ',datafname);
errordlg(errstr,'FILE CLOSE ERROR');
end
end



--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ViKo   Окна БПФ   Oct 2 2013, 12:55
- - ivan219   Я так думаю что вот так -> 0 1 2 3 4 3 2 1 или ...   Oct 2 2013, 13:16
- - ViKo   Вот здесь что-то пишут, но не могу понять, что. ...   Oct 2 2013, 13:53
- - SemperAnte   На ноль умножать и не надо. Для этих целей всегда...   Oct 3 2013, 06:59
- - V_G   2 ViKo: Вам точно нужно именно БПФ? Дело в том, чт...   Oct 3 2013, 07:19
- - thermit   ЦитатаV_G: Дело в том, что БПФ становится "бы...   Oct 3 2013, 08:14
- - ViKo   БПФ быстрее ДПФ. 8 точек - это только для примера....   Oct 3 2013, 09:12
- - SemperAnte   Вот готовая формула, которую использует Матлаб, д...   Oct 3 2013, 11:32
- - Alex11   По поводу коэффициента при использовании окна. там...   Oct 3 2013, 15:59
|- - Ruslan1   Я вот такое использую. Коэффициент альфа и форму о...   Oct 3 2013, 19:57
|- - ViKo   Цитата(ViKo @ Oct 4 2013, 14:59) Сделал, ...   Jan 22 2014, 09:58
- - AndrewN   QUOTE (ViKo @ Oct 2 2013, 15:55) Трегольн...   Oct 6 2013, 07:26
|- - ViKo   Цитата(AndrewN @ Oct 6 2013, 10:26) Оконн...   Oct 6 2013, 08:01
|- - AndrewN   QUOTE (ViKo @ Oct 6 2013, 12:01) Все окон...   Oct 6 2013, 09:08
- - ViKo   Окна имеют коэффициент ослабления, показывающий, в...   Oct 15 2013, 21:02
|- - petrov   Цитата(ViKo @ Oct 16 2013, 01:02) Окна им...   Oct 16 2013, 09:18
|- - ViKo   Цитата(petrov @ Oct 16 2013, 12:18) Хотит...   Oct 16 2013, 11:30
|- - petrov   Цитата(ViKo @ Oct 16 2013, 15:30) У меня ...   Oct 16 2013, 11:45
- - Alex11   Чтобы получать правильный ответ с окнами, нужно бр...   Oct 17 2013, 15:33
- - Tiro   Маленькое примечание. Есть некоторые методические ...   Oct 17 2013, 21:59
- - ViKo   Я именно на целом количестве периодов и эксперимен...   Oct 18 2013, 10:43


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2025 - 17:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01356 секунд с 7
ELECTRONIX ©2004-2016