织梦CMS - 轻松建站从此开始!

罗索

如何利用Matlab产生单音信号

jackyhwei 发布于 2020-08-04 18:43 点击:次 
单音信号,既单一频率的信号,在测试IFFT/FFT正确性时,我们常常用到单音信号,一般需要的单音信号时是复数形式; fm = 2e6 ; %信号频率 fs = 122.88e6; %采样速率 w = 2*pi*fm; dt = 1/fs; t = 0:dt:dt*32
TAG: 单音信号  频响  

单音信号,既单一频率的信号,在测试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中;

(weixin_38939826)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/202008/17715.html]
本文出处:CSDN博客 作者:weixin_38939826 原文
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容