單音信號,既單一頻率的信號,在測試IFFT/FFT正確性時,我們常常用到單音信號,一般需要的單音信號時是複數形式;
fm = 2e6 ; %信號頻率
fs = 122.88e6; %採樣速率
w = 2*pi*fm;
dt = 1/fs;
t = 0:dt:dt*3275; %3276個點
data = exp(j*w*t);
通過歐拉公式可知,利用 exp(j*w*t)即可生成單音信號,頻率和採樣率需要根據測試需求自定義;
如果是工程中進行測試,需要將Matlab生成的數據進行保存,此時需要進行定點化;
Matlab中複數爲double型,每個數據佔據64bit,我們需要將其轉化爲16bit,其中可以選擇多少位有效;
在進行定點化前,我們需要先對數據進行歸一化,既除以信號幅度最大的值,
datainput = fft(data,4096)./2906; ;
此時完成了歸一化,然後進行定點量化,
vector_in_real = (2^12-1)*real(datareshape);
vector_in_imag = (2^12-1)*imag(datareshape);
我選擇的是13位有效,且是有符號位,所以乘以(2^12-1);之後通過round函數進行截取即可;
vector_real = round(vector_in_real);
vector_imag = round(vector_in_imag);
在工程中,通常不使用.bin 文件,如果使用.mat文件,使用C/C++打開時需要matlab庫函數,此時最好的選擇是保存爲txt文件,然後以數組的形式讀取數據;
fid_lpf = fopen('single_data.txt','w');
fprintf(fid_lpf,'%3d,%3d,%3d,%3d,%3d,%3d,%3d,%3d,\n',singleout);
fclose(fid_lpf);
下面講述如何在C語言中打開txt文件,
int16_t test[32760]=
{
#include "single_data.txt"
}
通過這種方式即可打開將文件中的數據以數組的方式存儲在test中;