画出你想要的正弦

画出你想要的正弦

% 修改N值,可以修改整个波形的构成样点数量;
% 修改f值,可以修改生成正弦信号的频率;
% 修改tscale,可以改变X轴显示的时间长度;
% 修改phase,可以调节相位;
% 修改A,可以调节振幅;


clear;
clc;
format long;
 
%【参数】
N=1000; %整个图由N个样点构成
tscale= 0.1;% X轴显示的时间长度,单位为秒
dt=tscale/N; %每个样点间的时间间隔
t=0:dt:(N-1)*dt;
f=20;%生成信号频率100Hz
phase=0.8;
A=60;
 
%【生成正弦信号】
y=A*sin(2*pi*f*t+phase);%0.5为振幅,0.8为相移
 
%【画图】
figure(1);
plot(t.*1000,y); %乘1000,将s换算成ms
title('20HZ');
axis([-inf,+inf,-80,+80]);%调节坐标显示范围
xlabel('时间/ms','FontName','宋体','FontWeight','normal','FontSize',14);
ylabel('位置值/"','FontName','宋体','FontWeight','normal','FontSize',14);

将连续的正弦波信号进行离散化

clc;
clear all;
%% 将连续的正弦波信号进行离散化
% 设正弦波周期为T=2*pi,对一个周期的正弦波进行100次采样,则
% 相应采样点的离散值为:
% sin(2*pi/100)
% sin(2*pi*2/100)
% . . .
% sin(2*pi*n/100) 0<=n<=100
% . . .
% sin(2*pi*100/100)

%% 1.设置离散化参数
T = 2*pi; %正弦波周期
N = 2^8; %采样点个数
sp = 0:(N-1); %采样点

%% 2.进行离散化采样
sin_data = sin(T*sp/N); % sin_data取值为-1至+1之间的浮点数

%% 3.将离散后的正弦波存储到Rom中
% 将离散后的数据进行定点化,
% Rom的规格是256x8bits,数据格式1bit符号位和7bits小数位
fix_point_sin_data = sin_data * (2^7-1);
fix_point_sin_data = fix(fix_point_sin_data);
% 对负数取补码,便于存储Rom中
for i=1:N
if fix_point_sin_data(i)<0
fix_point_sin_data(i) = 256+fix_point_sin_data(i);
end
end

%% 生成mif文件
fid = fopen('rom_256x8_init.mif','w+');
fprintf(fid,'WIDTH=8;\n');
fprintf(fid,'DEPTH=256;\n');
fprintf(fid,'\n');
fprintf(fid,'ADDRESS_RADIX=UNS;\n');
fprintf(fid,'DATA_RADIX=UNS;\n');
fprintf(fid,'\n');
fprintf(fid,'CONTENT BEGIN\n');
for i=0:255
fprintf(fid,' %d : %d;\n',i,fix_point_sin_data(i+1));
end
fprintf(fid,'END;\n');
fclose(fid);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

傻童:CPU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值