MATLAB生成COE文件

news2024/9/20 9:29:30

MATLAB代码 

% 参数设置
N = 4096; % 数据点数量
t = linspace(0, 2*pi, N); % 时间向量
width = 12; % 位宽

% 正弦波,幅度在0到5之间
sine_wave = 2.5 * sin(t) + 2.5;

% 三角波,幅度在0到5之间
tri_wave = 5 * (1 - abs(mod(t/(2*pi)*4, 2) - 1));

% 方波,幅度在0到5之间
square_wave = 2.5 * (square(t) + 1); % 将范围调整为0到5之间

% 将波形数据保存为COE文件
save_to_coe('sine_wave.coe', sine_wave, width);
save_to_coe('tri_wave.coe', tri_wave, width);
save_to_coe('square_wave.coe', square_wave, width);

% 读取并绘制正弦波
sine_wave_data = read_coe('sine_wave.coe', N, width);
figure;
plot(sine_wave_data);
title('Sine Wave');
xlabel('Sample');
ylabel('Amplitude');

% 读取并绘制三角波
tri_wave_data = read_coe('tri_wave.coe', N, width);
figure;
plot(tri_wave_data);
title('Triangle Wave');
xlabel('Sample');
ylabel('Amplitude');

% 读取并绘制方波
square_wave_data = read_coe('square_wave.coe', N, width);
figure;
plot(square_wave_data);
title('Square Wave');
xlabel('Sample');
ylabel('Amplitude');

% 函数:保存为COE文件
function save_to_coe(filename, data, width)
    % 打开文件
    fid = fopen(filename, 'w');
    
    % 写入COE文件头部
    fprintf(fid, 'memory_initialization_radix=16;\n');
    fprintf(fid, 'memory_initialization_vector=\n');
    
    % 写入数据
    for i = 1:length(data)
        if i == length(data)
            fprintf(fid, '%X;\n', round(data(i) * (2^width - 1) / 5)); % 最后一行以分号结尾
        else
            fprintf(fid, '%X,\n', round(data(i) * (2^width - 1) / 5));
        end
    end
    
    % 关闭文件
    fclose(fid);
end

% 函数:从COE文件中读取数据
function data = read_coe(filename, depth, width)
    % 打开COE文件
    fid = fopen(filename, 'r');
    
    % 跳过文件头部信息
    while true
        line = fgetl(fid);
        if contains(line, 'memory_initialization_vector=')
            break;
        end
    end
    
    % 初始化数据数组
    data = zeros(1, depth);
    
    % 读取数据部分
    i = 1;
    while i <= depth
        line = fgetl(fid);
        if line(end) == ';'
            line(end) = []; % 去掉分号
        end
        values = strsplit(line, ',');
        for j = 1:length(values)
            hex_value = strtrim(values{j});
            if ~isempty(hex_value) % 确保值不为空
                data(i) = hex2dec(hex_value) * 5 / (2^width - 1);
                i = i + 1;
            end
        end
    end
    
    % 关闭文件
    fclose(fid);
end

运行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2093109.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记一次学习--webshell绕过

目录 第一题 第二题 第三题 第四题 第五题 第一题 <?php$action $_GET[action]; $parameters $_GET; if (isset($parameters[action])) {unset($parameters[action]); }$a call_user_func($action, ...$parameters); 上面题目&#xff0c;下面的call_user_func有一…

Spring 是什么

首先我们先看一个例子。以下是代码的结构。 public interface UserDAO {/*** 根据id删除用户*/void deleteById(); } public class UserDAOImplForMySQL implements UserDAO {Overridepublic void deleteById() {System.out.println("使用MySQL数据库删除信息....")…

day49 | 42. 接雨水 84. 柱状图中最大的矩形

代码随想录算法训练营第 49 天| 42. 接雨水 84. 柱状图中最大的矩形 Leetcode 42. 接雨水 题目链接&#xff1a;https://leetcode.cn/problems/trapping-rain-water/description/ 题目描述&#xff1a; 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按…

【第三期实战营闯关作业##LMDeploy 量化部署进阶实践】

《LMDeploy 量化部署进阶实践》这节课内容有些多&#xff0c;因此分了两部分提交了。以下是记录复现过程及截图; 这是执行了下面的命令&#xff0c;占用显存的情况。&#xff08;如截图顶部&#xff09; lmdeploy chat /root/models/internlm2_5-7b-chat --cache-max-entry-co…

视觉检索(以图搜图)技术分享

视觉检索&#xff08;Visual Retrieval&#xff09;是一个涉及计算机视觉和图像处理的技术领域&#xff0c;主要目标是从大量的视觉数据中找到与查询图像或视频相关的内容。视觉检索技术在多个领域都有广泛应用&#xff0c;如医疗图像分析、安全监控、机器人视觉、电子商务等。…

《高等代数》“爪”字型行列式

说明&#xff1a;此文章用于本人复习巩固&#xff0c;如果也能帮助到大家那就更加有意义了。 注&#xff1a;1&#xff09;“爪”字型行列式的第一种求解方法是利用初等行&#xff08;列&#xff09;变换&#xff0c;将第一列除第一行的第 一个数以外的其它数…

浅谈常见的分布式ID生成方案

一、UUID UUID是通用唯一标识码的缩写&#xff0c;其目的是让分布式系统中的所有元素都有唯一的辨识信息&#xff0c;而不需要通过中央控制器来指定唯一标识。 优点&#xff1a; &#xff08;1&#xff09;降低全局节点的压力&#xff0c;使得主键生成速度更快&#xff1b; &…

Llamaindex RAG实践

加入xtunert文档作为提示词 让大模型理解xtuner

【C++ Primer Plus习题】7.8

问题: 解答: #include <iostream> using namespace std;#define SEASONS 4typedef struct _Spend {double money[SEASONS]; }Spend;const char* Snames[SEASONS] { "Spring","Summer","Fall","Winter" };void fill(double* ex…

vue2表格显隐列的封装【升级缓存版】

背景 我们知道&#xff0c;若依后台有列表页、表格字段有显隐列的功能&#xff0c;但是&#xff0c;页面一旦刷新&#xff0c;就又回到初始状态了&#xff0c;但是有时候我们想要刷新后也保留我们设置的显隐列&#xff0c;就需要自己封装了 若依显隐列示例图如下&#xff1a; …

RK3568笔记五十八:基于SIP的视频通话测试

若该文为原创文章,转载请注明原文出处。 一、简介 记录SIP的视频通话测试过程,以前有做过GB28181了解过SIP协议,后面由于一些原因,没有在做了,在安防领域上,有很多终端设备使用SIP协议实现视频对讲等功能。 此篇记录交叉编译eXosip和osip,并编写检测的SIP客户端,通过…

【kubernetes】kubernetes Deployment 详解

Deployment 详解 kubernetes Deployment 详解创建与删除kubernetes Deployment更新/回滚/缩放/暂停/恢复部署操作 发布策略1、在zs命名空间下创建3个httpd副本并查看结果2、尝试删除其中一个副本并查看结果3、删除所有副本并查看结果4、使用k8s做金丝雀发布测试 kubernetes Dep…

teamtalk最近联系会话

最近联系人相关信令和协议设计 enum BuddyListCmdID {CID_BUDDY_LIST_RECENT_CONTACT_SESSION_REQUEST 513,CID_BUDDY_LIST_RECENT_CONTACT_SESSION_RESPONSE 514,};流程图 根据最新的时间戳查找最新的会话更新客户端的会话时间 /*** 获取最近会话接口** param pPdu …

Java数据结构(七)——优先级队列与PriorityQueue

文章目录 优先级队列与PriorityQueue堆基本概念和性质建堆堆的插入堆的删除堆的应用 PriorityQueuePriorityQueue的构造方法PriorityQueue的常用方法PriorityQueue的模拟实现 经典TopK问题 优先级队列与PriorityQueue 优先级队列是一种特殊类型的队列&#xff0c;其中元素按照…

聊聊 OceanBase 内存管理

内存配置管理是数据库日常管理中非常重要的工作&#xff0c;正确合理配置数据库内存是保障系统高效运行的前提条件。 OceanBase 数据库是一个支持多租户架构的准内存级的分布式数据库&#xff0c;对大容量内存的管理和使用提出了很高的要求。实际使用上&#xff0c;OceanBase …

1.【R语言】R语言的下载和安装

R语言是一种开源编程语言&#xff0c;它提供了丰富的统计模型和图形绘制功能&#xff0c;广泛用于数据科学、统计分析、数据挖掘和机器学习。R有一个活跃的社区和大量的包&#xff0c;可以满足各种需求&#xff0c;如数据清洗、绘图和报告生成。其强大的数据处理能力和灵活的可…

【ESP-IDF FreeRTOS】队列管理

先包含下头文件。 #include "freertos/queue.h" 队列大家应该不陌生&#xff0c;就是一个先进先出的容器。用在FreeRTOS里用途就多了。 首先是可以让任务与任务之间以及中断之间通信&#xff0c;任务A把数据塞进队列再让任务B取出&#xff0c;这样就可以传递数据了…

BMC lighttpd kvm数据分析(websocket)

1.说明 lighttpd源码: https://github.com/lighttpd/lighttpd1.4.gitlighttpd wiki: https://redmine.lighttpd.net/projects/lighttpd/wiki/libfcgi: https://github.com/toshic/libfcgi/tree/master 注意: 本章的代码仓库: https://gitee.com/wit_yuan/lighttpd_kvm 2.编…

3127.构造相同颜色的正方形

1.题目描述 给你一个二维 3 x 3 的矩阵 grid &#xff0c;每个格子都是一个字符&#xff0c;要么是 B &#xff0c;要么是 W 。字符 W 表示白色&#xff0c;字符 B 表示黑色。 你的任务是改变 至多一个 格子的颜色&#xff0c;使得矩阵中存在一个 2 x 2 颜色完全相同的正方形。…

无敌美少男和无敌美少女构建企业级私有仓库(harbor)

一&#xff1a;harbor简介 Harbor 是由 vmware 公司开源的企业级 Docker Registry 项目。 它提供了以下主要功能和特点&#xff1a; 基于角色的访问控制&#xff08;RBAC&#xff09;&#xff1a;可以为不同的用户和用户组分配不同的权限&#xff0c;增强了安全性和管理的灵…