TA的每日心情 | 开心 2022-8-14 12:15 |
---|
初级会员
- 积分
- 94
|
本帖最后由 cyy13623649348 于 2019-9-3 11:41 编辑
这里使用MATLAB产生两个不同频率的正弦信号s1与s2,将两个信号相加得到s,即s=s1+s2,最后将信号s的数据存入TXT文件。- f1=1000; %信号1频率为1kHz
- f2=3000; %信号2频率为3kHz
- Fs=20000; %采样频率为20KHz
- N=12; %量化位数
- %产生信号
- t=0:1/Fs:0.1;
- c1=2*pi*f1*t;
- c2=2*pi*f2*t;
- s1=sin(c1);%产生正弦波
- s2=sin(c2);%产生正弦波
- s=s1+s2; %产生两个单载波合成后的信号
- %产生随机序列信号
- %归一化处理
- s=s/max(abs(s));
- %12比特量化
- Q_s=round(s*(2^(N-1)-1));
- %求信号的幅频响应
- m_s=20*log(abs(fft(Q_s,1024)))/log(10); m_s=m_s-max(m_s);
- %设置幅频响应的横坐标单位为Hz
- x_f=[0:(Fs/length(m_s)):Fs/2];
- %只显示正频率部分的幅频响应
- mf_s=m_s(1:length(x_f));
- %绘制时域图形
- figure(1)
- plot(t,s,'-.');
- set(gca,'XLim',[0 0.01]);%x轴的数据显示范围
- xlabel('时间');ylabel('归一化幅值');title('Matlab仿真合成信号时域图');
- grid;
- %绘制幅频响应曲线
- figure(2)
- plot(x_f,mf_s,'-.');
- xlabel('频率(Hz)');ylabel('幅度(dB)');title('Matlab仿真合成单频信号的频谱');
- legend('输入信号频谱');
- grid;
- %将生成的数据以十进制数据格式写入txt文件中
- fid=fopen('J:\E4_7_Int_s.txt','w'); %自己改一下存放目录,这里我存在J盘
- fprintf(fid,'%8d\r\n',Q_s);
- fprintf(fid,';');
- fclose(fid);
- %将生成的数据以二进制数据格式写入txt文件中
- fid=fopen('J:\E4_7_Bin_s.txt','w');
- for i=1:length(Q_s)
- B_s=dec2bin(Q_s(i)+(Q_s(i)<0)*2^N,N)
- for j=1:N
- if B_s(j)=='1'
- tb=1;
- else
- tb=0;
- end
- fprintf(fid,'%d',tb);
- end
- fprintf(fid,'\r\n');
- end
- fprintf(fid,';');
- fclose(fid);
复制代码 下面是运行后产生的波形和频谱:
|
|