首页 > 技术文章 > 使用matlab产生不同频率波形并保存为txt格式,coe格式

-zimuqi 2021-07-16 15:05 原文

1. matlab 保存波形数据到文件

  • matlab操作方法大致与c语言相似,可以比较着学。
    代码如下:
x=0:1:1024;
y=sin(x);
z=[x;y]
fp=fopen('wave.TXT','w');
fprintf(fp,'x=%6.2f sin(x)=%8.4f\n',z);
fclose(fp);

2. 产生波形文件转换为short类型保存到dat文件中

Fs=1024;
dt=1.0/Fs;
T=1;N=T/dt;t=[0:N-1]/N
x1=sin(2*pi*300*t)+sin(2*pi*500*t)+sin(2*pi*1000*t)+sin(2*pi*1500*t)+sin(2*pi*3000*t);     %产生一个不同频率的信号
b=round(x1*2^11);       %将float类型数转换为short类型,进行量化,转换为定点,方便FPGA使用
fp=fopen('wave.dat','w');
fprintf(fp,'%d7\n',b);
fclose(fp);

3. 生成波形保存为coe文件

  • 转换为coe文件主要是为了FPGA中调用,测试仿真的时候可以使用
Fs=1024;
dt=1.0/Fs;
T=1;N=T/dt;t=[0:N-1]/N
x1=sin(2*pi*500*t)+sin(2*pi*800*t)+sin(2*pi*5000*t)+sin(2*pi*8000*t);     %产生一个不同频率的信号
b=round(x1*2^11);
fid=fopen('wave.coe','w');
fprintf(fid,'MEMORY_INITIALIZATION_RADIX=10;\n');
fprintf(fid,'MEMORY_INITIALIZATION_VECTOR=\n');
for i=1:1:1024
    fprintf(fid,'%d',b(i));
    if i==1024
        fprintf(fid,';');
    else
        fprintf(fid,',');
    end
    if mod(i,15)==0
        fprintf(fid,'\n');
    end
end
fclose(fid)

推荐阅读