如何利用Matlab產生單音信號

單音信號,既單一頻率的信號,在測試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中;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章