怎么用MATLAB产生FPGA所需的hamming窗系数
需求
在FPGA处理中如果需要对待处理数据加窗,则需要窗系数存储在ROM中以供使用。
前言
加窗有啥用呢,我们知道:时域的乘积就是频域的卷积。
而直接截取的一段数据,如果直接求解fft,你发现有效频点旁瓣贼拉高,对信号的后处理是不利的。
那么加个窗就会使得旁瓣被抑制很多,使得表现的没那么椎间盘突出。但不好的一面,会使得主瓣会被展宽。毕竟根据能量守恒定律,旁瓣矮了能量减小,主瓣就得身宽体胖吸收多余能量。
所以选择正确的窗函数也是很重要的。
MATLAB窗函数说明
流程
比如加个hamming窗,8192点,16bit放大。
new方法:直接生成xilinx 所需的coe文件。 ceil函数为取整。
clc; clear all; close all; N = 8192; %窗长度 M = 2^16-1; %系数放大16bit w = hamming(N); %加汉明窗 x = ceil(w*M); %放大取整 plot(x); fp=fopen('Hamming8192.coe','w'); %open the file fprintf(fp,'memory_initialization_radix=10;\n'); %header fprintf(fp,'memory_initialization_vector=\n'); %header fprintf(fp, '%g,\n', x(1:N-1)); % (1:n-1) data with ',' fprintf(fp, '%g;\n', x(N)); %the last data with ';' fclose(fp); %close the file
以上。