【背景】
朋友需要用FPGA输入16位二进制格式的数据,让帮忙用matlab产生这样一组正弦信号数据。【10KHz正弦波信号,每个周期25个样点,持续40ms,最后以16位二进制格式输出】
【代码】 clc clear all close all f = 10000; % 频率, 10kHz T = 1/f; dt=T/25; %25是每个周期的点数 N=25*400; %40ms数据共计10000个点 x = 0:dt:(N-1)*dt;%根据每个周期多少个点计算中间的步进,0.1ms/25个点。 w = f*2*pi; % 频率,rad/s A = 1; % 振幅 sin_wave = A*sin(w*x); figure; plot(x,sin_wave); grid on xlabel('x/s'); ylabel('y/V'); % 量化位宽 width = 16;%数据宽度16位 % 量化滤波器系数 sin_data = round(sin_wave .* (2^(width-1) - 1));%量化正弦波形数据并取整 data_com_sin = zeros(1,length(sin_data)); for i = 1:length(sin_data) if sin_data(i) >= 0 data_com_sin(i) = sin_data(i); else data_com_sin(i) = 2^width + sin_data(i); end end data_bin = dec2bin(data_com_sin);%十进制转二进制