首页 > 其他分享 >使用matlab生成正弦波、三角波、方波

使用matlab生成正弦波、三角波、方波

时间:2022-08-26 16:00:25浏览次数:67  
标签:十六进制 方波 正弦波 生成 zeros matlab 127 100 数据

生成余弦波数据(该示例中展示了如何输出十六进制数据到文件中)

N = 100 ;
y = zeros(N , 1) ;%生成100行*1列的矩阵
y_integer = zeros(N , 1) ;%生成100行*1列的矩阵
y_hex = zeros(N , 1) ;%生成100行*1列的矩阵,十六进制
for i = 1:1:N %循环1~100,累加1
    x = i ;
    %y(i,1) = ceil( 127*sin(x*2*pi/N) ) ;%ceil为四舍五入函数,输出范围为-127~127的正弦波数据
    y(i,1) = ceil( 127*cos(x*2*pi/N) )  ;%ceil为四舍五入函数,输出范围为-127~127的余弦波数据
end   
plot(y);%画图预览
 
fid = fopen('cos_100point.coe','wt');    %创建一个名为cos_100point.coe的文件
%- COE 文件前置格式
fprintf( fid, 'MEMORY_INITIALIZATION_RADIX = 16;\n');                     
fprintf( fid, 'MEMORY_INITIALIZATION_VECTOR =\n');
%- 写数据
 
for i = 1:1:N
    if (y(i,1)<0)
       y_integer(i,1)=y(i,1)+256;%负数用补码表示
    else
       y_integer(i,1)=y(i,1);%正数的补码为原码
    end    
    y_hex= dec2hex(y_integer);%因为dec2hex只能转换正数,因此先将y取补码
 
    if(i == N)
        %最后一个点时,标点为分号,其余时候为逗号
        fprintf(fid,'%c%c;',y_hex(i,1),y_hex(i,2));  %输出16进制数据
%       fprintf(fid,'%d,\n',y(i,1));  %输出10进制数据
    else
        fprintf(fid,'%c%c,\n',y_hex(i,1),y_hex(i,2));  %输出16进制数据
%       fprintf(fid,'%d,\n',y(i,1));  %输出10进制数据
    end
end
fclose(fid);%关闭文件

  

上述matlab代需要重点关注的是:

1、按照需求,模拟生成正弦波数据,利用率sin函数和cos函数。

2、将负数通过转换,变为正数,操作方式为加上256(2的N次方,N为数据位宽)

3、使用DEC2HEX将补码数据转换为十六进制字符

4、使用fprintf函数,利用两个%c,将十六进制字符写入文件中。实现了十六进制数据的转换。

依据正弦波的matlab代码编写方法,照葫芦画瓢,可以得到三角波数据和方波数据。
三、生成三角波数据

%% triangle wave data write in coe file
N = 100 ;
y = zeros(N , 1) ;%生成100行1列的矩阵
for i = 1:1:N 
    if(i <= 50) %从0递增到49
        y(i,1) = i-1 ;
    else      %从49递减到0
        y(i,1) = 100 - i;
    end
end   
plot(y);%绘图预览
fid = fopen('triangle_100point.coe','wt');    
%COE文件格式
fprintf( fid, 'MEMORY_INITIALIZATION_RADIX = 10;\n');                     
fprintf( fid, 'MEMORY_INITIALIZATION_VECTOR =\n');
%输出十进制数据,保存至文件
for i = 1:1:N
    if(i == N)
        fprintf(fid,'%d;',y(i,1)); %最后一个点时,标点为分号,其余时候为逗号
    else
        fprintf(fid,'%d,\n',y(i,1));  
    end 
end
fclose(fid);%关闭文件

  

生成方波数据

N = 100 ;%100个点的数据
y = zeros(N , 1) ;%生成100行1列的矩阵
for i = 1:1:N 
    if(i <= 50) %输出50个点的高电平,50个点的低电平
        y(i,1) = 255 ;
    else
        y(i,1) = 0 ;
    end
end   
plot(y);
 
fid = fopen('rectangle_100point.coe','wt');    %创建文件rectangle_100point.coe
%COE文件格式
fprintf( fid, 'MEMORY_INITIALIZATION_RADIX = 10;\n');                     
fprintf( fid, 'MEMORY_INITIALIZATION_VECTOR =\n');
%保存文件数据至COE文件中
for i = 1:1:N
    if(i == N)
        fprintf(fid,'%d;',y(i,1)); %最后一个点时,标点为分号,其余时候为逗号
    else
        fprintf(fid,'%d,\n',y(i,1));  
    end
end
fclose(fid);%关闭文件

  

 

标签:十六进制,方波,正弦波,生成,zeros,matlab,127,100,数据
From: https://www.cnblogs.com/54programer/p/16627823.html

相关文章

  • MATLAB R2022a中文版下载及安装教程(图文详解免费版)
    一、下载下载地址:点击下载二、安装激活1、如果安装有旧版本,请先卸载;2、使用WinRAR解压镜像文件,或者win10直接加载,点击“setup.exe”开始安装;3、点击右上角高级选项,选......
  • matlab中persistex型的变量
    学习matlab中的persistex类型的变量特性和C语言中static型变量差不多。请看代码:1%fileName:persistex.m2%Thisscriptdemonstratespersistentvariables3%The......
  • matlab2021a的快捷键修改
    使用matlab2021a,在使用编辑器过程中,默认的快捷键非常不方便。修改如下:1、HOME-->perference,打开perfecence窗口2、左侧MATLAB-->Keyboard-->Shortcuts,右侧Activesetti......
  • 边用边学--Matlab(1)
    边用边学--Matlab(1)Zeros         Size     Table Bitget      就是查看某个数的第几bit Find    ......
  • matlab实现某功能
    类型判断1、查看变量类型时可用class,判断某变量的类型值:会生成0或1,1—匹配,0—不匹配isa(Data,'double')isa(Data,'cell')2、也可用如下。strcmp(class(Data),......
  • matlab读写文件操作
    把数组矩阵写入txt文件,并用逗号或空格隔开1、若需要用,分隔,则下述''用','替换。 dlmwrite('myfile.txt',A,'delimiter',''); 2、fileID=fopen('ma......
  • matlab编写程序时的注释该怎么写
    不同的组织都有不同的规定,对于matlab注释来说,只要包括以下几个方面就差不多够了:1、Nameofthefunction函数的名称2、Descriptionofwhatthefunc......
  • 利用matlab进行双目相机标定
    采集图像命令行窗口输入cameraCalibrator打开相机标定工具箱。单击AddImages后的小三角,选择fromcamera。选择相机,设置相机属性。设置分辨率设置保存路径和拍照......
  • matlab对倾斜图像的矫正
    I=imread('附件B.PNG');f=rgb2gray(I);%灰度化BW=edge(f,'canny');%edge:以灰度图像为输入,'canny'为边缘检测算子%输出BW为二值图像,边缘......
  • matlab画图美化思路
     画图区域带框比不带框(box)好看,外框线条粗一点比细一点好看图例不带外框好看(box)外框上标刻度,刻度朝里比朝外好看配色要协调,可以搜配色尤其是画折线,线条粗比细好看......