【背景】
朋友需要用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);%十进制转二进制
标签:25,16,二进制,data,40ms,com,sin
来源: https://blog.csdn.net/qq_15271231/article/details/89854461