当前位置: 首页 > article >正文

LuatOS扩展库API——【libfota2】远程升级

LuatOS 是面向物联网设备的轻量级嵌入式 Lua 脚本运行框架 / 实时系统基于 Lua 5.3 深度优化用于 4G‑Cat.1、MCU 等物联网终端。LuatOS 开发特点是基于 Lua 脚本、协程多任务设计当前LuatOS共有70多个核心库20多个扩展库1000多个应用demo示例覆盖所有基础应用开发方便。一、概述FOTA远程升级功能是物联网设备的核心功能之一它允许设备通过无线网络更新固件而无需物理接触。在LuatOS开发模式下固件分为两部分core(底层核心固件)和script(用户脚本)。远程升级时core采用差分升级方式而 script 则采用全量覆盖升级方式。您可以选择仅升级script、仅升级core或同时升级corescript。LuatOS主要提供了两套FOTA接口传统的libfota和更新的libfota2两者都支持通过合宙官方IoT平台和自建第三方HTTP服务器进行升级需要注意的是第三方http服务器需要满足如下两点-- 若需要升级, 响应http 200, body为升级文件的内容-- 若不需要升级, 响应300或以上的代码,务必注意为了更清晰地了解这两个库的特点下表对比了它们的主要特性。libfota2 是LuatOS提供的升级版FOTA接口它通过opts表传递参数相比传统的libfota库在接口清晰度和易用性上有显著提升。对于新开发的LuatOS项目建议优先选择libfota2来实现远程升级功能。二、核心示例1、核心示例是指使用本库文件提供的核心API开发的基础业务逻辑的演示代码2、核心示例的作用是帮助开发者快速理解如何使用本库所以核心示例的逻辑都比较简单3、更加完整和详细的demo请参考 LuatOS仓库 中各个产品目录下的demo/fota/fota2--用法实例locallibfota2require(libfota2)-- 升级结果的回调函数-- 功能:获取fota的回调函数-- 参数:-- result:number类型-- 0表示成功-- 1表示连接失败-- 2表示url错误-- 3表示服务器断开-- 4表示接收报文错误-- 5表示使用iot平台VERSION需要使用 xxx.yyy.zzz形式localfunctionfota_cb(ret)log.info(fota,ret)ifret0thenlog.info(升级包下载成功,重启模块)rtos.reboot()elseifret1thenlog.info(连接失败,请检查url拼写或服务器配置(是否为内网))elseifret2thenlog.info(url错误,检查url拼写)elseifret3thenlog.info(服务器断开,检查服务器白名单配置)elseifret4thenlog.error(FOTA 失败,原因可能有\n..1) 服务器返回 200/206 但报文体为空(0 字节—— 通常是升级包文件缺失或 URL 指向空文件\n..2) 服务器返回 4xx/5xx 等异常状态码 —— 请确认升级包已上传、URL 正确、鉴权信息有效\n..3) 已经是最新版本无需升级)elseifret5thenlog.info(版本号书写错误,iot平台版本号需要使用xxx.yyy.zzz形式)elselog.info(不是上面几种情况 ret为,ret)endendlibfota2.request(fota_cb)-- 若需要定时升级sys.timerLoopStart(libfota2.request,4*3600*1000,fota_cb)三、常量详解libfota2核心库没有常量。四、函数详解libfota2.request(cbFnc, opts)功能发起远程升级libfota2.request 是LuatOS为物联网设备提供的一个强大、灵活且安全的远程固件升级接口它能极大简化通过合宙平台或私有服务器实现设备FOTA功能的开发流程。参数cbFnc参数含义升级包下载结果回调函数用于返回升级包下载结果。回调函数的调用形式为cbFnc(result) result:number类型0表示成功1表示连接失败2表示url错误3表示服务器断开4表示接收报文错误5表示使用iot平台VERSION需要使用 xxx.yyy.zzz形式 数据类型function类型 取值范围任意有效的函数名都行 是否必选必须传入此参数 注意事项暂无 参数示例如下方所示定义了一个函数fota_cb就可以做为此参数传入localfunctionfota_cb(result)log.info(fota,result)ifresult0thenlog.info(升级包下载成功,重启模块)rtos.reboot()elseifresult1thenlog.info(连接失败,请检查url拼写或服务器配置(是否为内网))elseifresult2thenlog.info(url错误,检查url拼写)elseifresult3thenlog.info(服务器断开,检查服务器白名单配置)elseifresult4thenlog.error(FOTA 失败,原因可能有\n..1) 服务器返回 200/206 但报文体为空(0 字节—— 通常是升级包文件缺失或 URL 指向空文件\n..2) 服务器返回 4xx/5xx 等异常状态码 —— 请确认升级包已上传、URL 正确、鉴权信息有效\n..3) 已经是最新版本无需升级)elseifresult5thenlog.info(版本号书写错误,iot平台版本号需要使用xxx.yyy.zzz形式)elselog.info(不是上面几种情况 result为,result)endendopts参数含义fota升级参数配置参数为table类型table内容格式说明如下{-- 参数含义指定固件升级服务器的URL。默认值是合宙iot平台的升级地址。所以若使用合宙iot平台,则不 需要填-- 数据类型string类型-- 取值范围支持HTTP、HTTPS支持域名、IP地址支持自定义端口标准的HTTP URL格式都支持-- 是否必选可选传入此参数-- 注意事项-- 如果是使用合宙IOT平台不需要填写URL, 因为默认值是合宙iot平台的升级地址-- 如果是自建的OTA服务器, 则需要填写正确的URL, 例如 http://192.168.1.5:8000/update-- 如果自建OTA服务器,且url包含全部参数,不需要额外添加参数, 请在url前面添加 ###-- 如果不加###则默认会上传如下参数--1. opts.version string 版本号, 默认是 固件版本号.xxx.zzz格式。注固件版本号是 rtos.version()返回的版本号xxx.zzzz是_G.VERSION参数中x和z--2. opts.timeout int 请求超时时间, 默认300000毫秒,单位毫秒--3. opts.project_key string 合宙IOT平台的项目key, 默认取全局变量PRODUCT_KEY,自建服务器不用填--4. opts.imei string 设备识别码, Cat.1模块默认取IMEIwifi模块默认取WLAN的STA MAC地 址mcu默认取 mcu.unique_id() 返回的唯一ID--5. opts.firmware_name string 底层版本号默认是 _G.PROJECT.. _LuatOS-SoC_ .. rtos.bsp()其中rtos.bsp()返回的是模组型号-- 参数示例-- 合宙iot服务器local opts {}-- 自建服务器库会自动附加默认参数(imei, version等):local opts { url http://192.168.1.5:8000/update%simeixxxxxxxproject_keyxxxxxxxxfirmware_namexxxxxxxxxversionxxxxxxxx }-- 自建服务器,且url包含全部参数,不需要额外添加参数, 请在url前面添加###local opts { url ###http://192.168.1.5:8000/update?device_id12345fw_ver1.2.3}url,-- 参数含义请求的版本号-- 数据类型string类型-- 取值范围合宙IOT有一套版本号体系,不传就是合宙规则默认是 BSP版本号.xxxx.zzz格式, 自建服务器的话当然是自行约定版本号了注BSP版本号是通过rtos.version()返回的版本号xxx.zzz是_G.VERSION参数中x和z-- 是否必选可选传入此参数-- 注意事项暂无-- 参数示例默认BSP版本号.xxx.zzz是2012.001.000或者自定义1.0.0version,-- 参数含义上网使用的网卡ID-- 数据类型number或者nil-- 取值范围number类型时取值范围参考socket api中的常量详解-- 是否必选可选传入此参数-- 注意事项如果没有传入此参数内核固件会自动选择当前时间点其他功能模块设置的默认网卡-- 除非你HTTP请求时一定要使用某一种网卡才设置此参数-- 如果没什么特别要求不要设置此参数使用系统中设置的默认网卡即可 -- 一般来说LuatOS的网络应用demo中都会有netdrv_device功能模块设置默认网卡-- 所以建议使用http.request接口时不要设置此参数直接使用netdrv_device设置的默认网卡就行-- 参数示例socket.LWIP_GP表示使用4G网卡adapter,-- 参数含义设置整个 FOTA HTTP 请求过程的超时时间-- 数据类型int类型,-- 取值范围number类型时取值范围为大于等于0的整数0表示永久等待-- 是否必选可选传入此参数-- 注意事项暂无-- 参数示例300000表示300stimeout,-- 参数含义合宙IOT平台的项目key, 默认取全局变量PRODUCT_KEY. 自建服务器不用填-- 数据类型string类型-- 取值范围无特别限制-- 是否必选可选传入此参数-- 注意事项仅用于合宙 IoT 平台。自建服务器不需要此参数。--如果未设置库会尝试从全局变量 PRODUCT_KEY 中获取。-- 参数示例user123 或者 nilproject_key,-- 参数含义设备识别码,用于服务器识别具体设备-- 数据类型string类型-- 取值范围默认取IMEI(Cat.1模块)或WLAN的STA MAC地址 (wifi模块)或 mcu.unique_id()获取MCU唯一ID-- 是否必选可选传入此参数-- 注意事项暂无-- 参数示例imei mobile.imei(),imei,-- 参数含义固件名称-- 数据类型string类型-- 取值范围默认是 _G.PROJECT.. _LuatOS-SoC_ .. rtos.bsp()-- 是否必选可选传入此参数-- 注意事项暂无-- 参数示例FOTA2_DEMO_LuatOS-SoC_Air780EPMfirmware_name,-- 参数含义服务器ca证书数据-- 数据类型string或者nil-- 取值范围无特别限制-- 是否必选可选传入此参数-- 注意事项当客户端需要验证服务器证书时需要此参数如果证书数据在一个文件中要把文件内容读出来赋值给server_ca_cert-- 参数示例例如通过Luatools烧录了server_ca.crt文件就可以通过io.readFile(/luadb/server_ca.crt)读出文件内容赋值给赋值给server_ca_certserver_cert,-- 参数含义客户端证书数据-- 数据类型string或者nil-- 取值范围无特别限制-- 是否必选可选传入此参数-- 注意事项当服务器需要验证客户端证书时需要此参数如果证书数据在一个文件中要把文件内容读出来赋值给client_cert-- 参数示例例如通过Luatools烧录了clinet.crt文件就可以通过io.readFile(/luadb/clinet.crt)读出文件内容赋值给赋值给client_certclient_cert,-- 参数含义加密后的客户端私钥数据-- 数据类型string或者nil-- 取值范围无特别限制-- 是否必选可选传入此参数-- 注意事项当服务器需要验证客户端证书时需要此参数如果加密后的私钥数据在一个文件中要把文件内容读出来赋值给client_key-- 参数示例例如通过Luatools烧录了clinet.key文件就可以通过io.readFile(/luadb/clinet.key)读出文件内容赋值给client.keyclient_key,-- 参数含义客户端私钥口令数据-- 数据类型string或者nil-- 取值范围无特别限制-- 是否必选可选传入此参数-- 注意事项当服务器需要验证客户端证书时需要此参数如果加密后的私钥数据在一个文件中要把文件内容读出来赋值给client_password-- 参数示例例如通过Luatools烧录了clinet.password文件就可以通过io.readFile(/luadb/clinet.password)读出文件内容赋值给client_passwordclient_password,-- 参数含义HTTP请求方法-- 数据类型string-- 取值范围支持GET、POST、HEAD等所有HTTP请求方法请求方法用大写字母表示-- 是否必选可选传入此参数如果没有传入此参数或者传入了nil类型则使用默认值默认值分为以下两种情况-- 如果没有设置filesformsbodybodyfile参数则默认为GET-- 如果至少设置了filesformsbodybodyfile中的一种参数则默认为POST-- 注意事项暂无-- 参数示例GET请求时填GETPOST请求时填POSTmethod,-- 参数含义HTTP请求头列表键值对的形式-- 数据类型table或者nil-- 取值范围当为table数据类型时请求头列表中支持一个或者多个请求头-- 是否必选可选传入此参数-- 注意事项暂无-- 参数示例{-- [Content-Type] application/x-www-form-urlencoded,-- [self_defined_key] self_defined_value-- }headers,-- 参数含义HTTP请求体-- 数据类型string或者zbuff或者nil-- 取值范围无特别限制-- 是否必选可选传入此参数-- 注意事项如果请求体是一个文件中的内容需要把文件内容读出来赋值给body使用-- 参数示例123456 或者 一个zbuff对象 或者 nilbody,}数据类型table或者nil 取值范围参考参数含义内各字段说明 是否必选可选传入此参数 注意事项暂无 参数示例如下方所示,如果url是http://192.168.1.5:8000/updateversion是1.0.0--local opts {-- url http://192.168.1.5:8000/update,-- version 1.0.0--}返回值无示例本示例章节仅列举一些常用功能的核心代码片段更加完整和详细的demo请参考 https://gitee.com/openLuat/LuatOS/tree/master/module 各个产品目录下的demo/fota2文件夹下内容--用法实例locallibfota2require(libfota2)-- 升级结果的回调函数-- 功能:获取fota的回调函数-- 参数:-- result:number类型-- 0表示成功-- 1表示连接失败-- 2表示url错误-- 3表示服务器断开-- 4表示接收报文错误-- 5表示使用iot平台VERSION需要使用 xxx.yyy.zzz形式localfunctionfota_cb(ret)log.info(fota,ret)ifret0thenlog.info(升级包下载成功,重启模块)rtos.reboot()elseifret1thenlog.info(连接失败,请检查url拼写或服务器配置(是否为内网))elseifret2thenlog.info(url错误,检查url拼写)elseifret3thenlog.info(服务器断开,检查服务器白名单配置)elseifret4thenlog.error(FOTA 失败,原因可能有\n..1) 服务器返回 200/206 但报文体为空(0 字节—— 通常是升级包文件缺失或 URL 指向空文件\n..2) 服务器返回 4xx/5xx 等异常状态码 —— 请确认升级包已上传、URL 正确、鉴权信息有效\n..3) 已经是最新版本无需升级)elseifret5thenlog.info(版本号书写错误,iot平台版本号需要使用xxx.yyy.zzz形式)elselog.info(不是上面几种情况 ret为,ret)endendlibfota2.request(fota_cb)五、模组支持说明支持LuatOS开发的所有产品都支持libfota2扩展库。

相关文章:

LuatOS扩展库API——【libfota2】远程升级

LuatOS 是面向物联网设备的轻量级嵌入式 Lua 脚本运行框架 / 实时系统,基于 Lua 5.3 深度优化,用于 4G‑Cat.1、MCU 等物联网终端。LuatOS 开发特点是基于 Lua 脚本、协程多任务设计,当前LuatOS共有70多个核心库,20多个扩展库&…...

Docker 27边缘容器编排实战:从零部署到万级IoT节点稳定运行的7个硬核配置诀窍

第一章:Docker 27边缘容器编排的演进逻辑与核心挑战边缘计算场景下,容器编排正从中心化调度向轻量、自治、低延迟协同范式迁移。Docker 27并非官方版本号(Docker CE 最新稳定版为 24.x),但作为技术演进的抽象符号&…...

ubuntu的基本使用

一.ubuntu的基本操作ctrlaltt:启动终端ctrlshift:终端字体变大ctrl-:终端字体变小ctrlshiftc/v:终端复制/粘贴文本cat/etc/issue:查看操作系统的版本tab键:自动补齐上下键:历史命令二.linux常用的shell命令1. linuxubuntu:~$:命令提示符解释&…...

C++编写MCP网关如何扛住50万TPS并发且零RCE漏洞?:基于ASan+Control-Flow Integrity+硬件辅助加密的工业级方案

第一章:C编写高吞吐量MCP网关安全性最佳方案总览构建高吞吐量MCP(Message Control Protocol)网关时,安全性不能以性能为代价妥协。现代金融、IoT与实时通信场景要求网关在百万级TPS下仍能抵御重放攻击、会话劫持、协议混淆及内存越…...

BiliDownload终极指南:一站式B站视频下载解决方案

BiliDownload终极指南:一站式B站视频下载解决方案 【免费下载链接】BiliDownload B站视频下载工具 项目地址: https://gitcode.com/gh_mirrors/bil/BiliDownload 你是否曾经遇到过这样的困扰?看到B站上精彩的教学视频、有趣的Vlog或者珍贵的纪录片…...

海明码和异或运算

一、海明码二、异或运算...

5分钟搞定视频字幕提取:免费本地工具终极指南

5分钟搞定视频字幕提取:免费本地工具终极指南 【免费下载链接】video-subtitle-extractor 视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含字幕区域检测、字幕内容提取。A…...

[AI] [Linux] 教我编一个启用rust的riscv kernel用于qemu启动

本文是博主在博客写作中的一次全新尝试,本次尝试通过输入给Claude Sonnet 4.6的prompt来自动生成一篇技术性博客。Prompt为: linux 7.0 kernel在 /home/projects/linux/linux,教我编一个启用rust的riscv kernel用于qemu启动Output如下(未作任…...

PPT图片视频音频提取神器,PPT模板不求人,建议使用

聊一聊看别人做的PPT总是那么好看。到自己做的时候,总是搭配不好,怎么搭配都感觉不好看。今天,给大家介绍一款神器,可以直接提取他人PPT里面的视频、图片、音频信息。收集他人PPT里面的素材,方便自己使用。非常简单&am…...

MySQL 索引介绍

本文章讲解 Hash、二叉树、平衡二叉树、B-Tree、BTree 索引的逻辑情况 查找都是索引操作,当数据量较大时,索引的大小可能有几个 G,甚至更多,为了减少索引在内存的占用,数据库索引是存储在磁盘上的,将索引以…...

Qwen-Image-Edit-F2P镜像免配置价值:省去diffusers/transformers手动安装

Qwen-Image-Edit-F2P镜像免配置价值:省去diffusers/transformers手动安装 想玩转AI图像生成和编辑,但被复杂的模型部署、环境配置劝退?这大概是很多开发者和AI爱好者的共同烦恼。手动安装diffusers、transformers库,处理各种依赖…...

如何用AI打造原创OC角色?2026从角色设定到动态生成的全链路创作指南

在原创角色OC创作中,AI已成为核心动力,打破“想法难落地、技术门槛高”的困境。想打造有灵魂、还原度高的角色,关键在于顺畅完成“概念设定→视觉落地→动态赋能→精细打磨”。V2Fun.art凭借全流程整合、低门槛操作和高适配性,成为…...

nli-MiniLM2-L6-H768快速上手:金融研报摘要主题分类(科技/宏观/行业)

nli-MiniLM2-L6-H768快速上手:金融研报摘要主题分类(科技/宏观/行业) 1. 工具简介 nli-MiniLM2-L6-H768是一款基于cross-encoder/nli-MiniLM2-L6-H768轻量级NLI模型开发的本地零样本文本分类工具。它专为解决传统文本分类需要大量标注数据和…...

颠覆传统巡检模式:AI技术如何重塑安全生产新格局

作为"我ai去巡检"小程序的技术研发团队,我们亲眼见证了人工智能如何从实验室概念转变为守护安全生产的核心力量。今天,我们将深入剖析AI技术在安全生产领域的前沿应用,揭秘我们如何攻克技术难题,打造这款重新定义行业标…...

Spring Security配置了AccessDeniedHandler却无效?别急,先检查你的全局异常处理器

Spring Security异常处理冲突排查指南:当AccessDeniedHandler遇上全局异常处理器 最近在重构一个老项目的权限模块时,遇到了一个看似简单却让人抓狂的问题:明明按照文档配置了AccessDeniedHandler,但权限不足时依然直接抛出Access…...

踩坑实录:NFS挂载环境下脚本执行权限问题(Operation not permitted)的深度排查与解决

在企业级部署中,NFS(网络文件系统)常被用来共享存储资源,方便多节点统一访问数据与安装包。但这种“便捷共享”的环境,也常常隐藏着各种权限陷阱。最近在KingbaseES数据库安装部署中,我就踩了一个典型的NFS…...

微软office365怎么安装?(保姆级流程)

1、微软office官网(www.office.com)--登录(报名后老师给的账号)2、登录后的界面3、应用--安装应用程序--Microsoft 365应用版4、下载office软件安装程序到桌面(或者你能找到的地方)5、找到安装程序并双击安…...

LFM2.5-VL-1.6B惊艳效果展示:OCR文档理解+结构化信息提取真实案例

LFM2.5-VL-1.6B惊艳效果展示:OCR文档理解结构化信息提取真实案例 1. 模型概述 LFM2.5-VL-1.6B是由Liquid AI推出的轻量级多模态大模型,专为端侧和边缘设备优化设计。这个1.6B参数的视觉语言模型(1.2B语言400M视觉)在保持轻量化的…...

ECS LIVA Mini Box QC710 ARM迷你主机评测与购买指南

1. ECS LIVA Mini Box QC710 迷你主机深度解析 最近在Stack Social平台上发现一款正在清仓促销的迷你主机——ECS LIVA Mini Box QC710,原价219美元现在仅售99.99美元。这款基于高通骁龙7c平台的迷你电脑在2021年推出时定位为开发者套件,如今价格腰斩后是…...

桥梁健康监测系统如何选?海陵区城市生命线项目中标单位为您解读

桥梁作为城市交通网络的关键节点,其结构安全状态直接关系到市民出行安全和城市运转效率。近年来,国内外多起桥梁安全事故为我们敲响了警钟,桥梁健康监测系统已成为城市生命线安全工程中不可或缺的重要组成部分。江苏星文科技有限公司作为海陵…...

数据库三大范式:从概念到实战,一篇文章彻底搞懂

为什么你的表设计总出问题?为什么数据冗余、更新异常、插入异常、删除异常频频发生?很可能是范式没用好。今天我们用最通俗的语言,把这三大范式讲清楚、讲透彻。数据库设计是一门艺术,而范式就是这门艺术的“基本法”。掌握三大范…...

基于安卓的农村劳动力信息匹配系统毕设

博主介绍:✌ 专注于Java,python,✌关注✌私信我✌具体的问题,我会尽力帮助你。一、研究目的本研究旨在设计并实现一种基于安卓平台的农村劳动力信息匹配系统以解决当前农村劳动力市场中存在的信息不对称与供需错配问题。随着我国城镇化进程的持续推进以及…...

Flux2-Klein-9B-True-V2多场景落地:政府宣传海报/公益广告图生成实践

Flux2-Klein-9B-True-V2多场景落地:政府宣传海报/公益广告图生成实践 1. 项目概述 Flux2-Klein-9B-True-V2是基于官方FLUX.2 [klein] 9B改进的文生图/图生图模型,专为高质量图像生成与编辑任务优化。该模型在保持原始模型强大生成能力的基础上&#xf…...

灵机一物AI原生电商小程序、PC端(已上线)-从 Vibe Coding 到 Wish Coding:AI 编程范式跃迁与蚂蚁灵光技术解读

摘要本文对比 Vibe Coding 与 Wish Coding 技术路径,解析蚂蚁灵光闪应用升级要点、灵光圈协作机制,探讨 Coding Agent 从开发者工具走向全民消费级产品的行业趋势。1. Vibe Coding 定位与边界1.1 核心逻辑- 面向:专业开发者- 入口&#xff1a…...

Phi-3.5-mini-instruct入门必看:网页封装+参数详解+中文场景调优指南

Phi-3.5-mini-instruct入门必看:网页封装参数详解中文场景调优指南 1. 模型简介 Phi-3.5-mini-instruct是一款专为中文场景优化的轻量级文本生成模型,特别适合日常问答、内容创作和知识辅助等任务。相比大型语言模型,它在保持良好生成质量的…...

XSKY 与平凯星辰(TiDB)完成联合解决方案互认证,存储+数据库联合交付能力再获验证

近日,XSKY 星辰天合与平凯星辰(北京)科技有限公司正式完成联合解决方案互认证。本次认证覆盖 XSKY 旗下 XEBS V6(星飞极速版)、XHERE V6(星飞极速版)、XEDP V6 三款核心产品与平凯星辰的平凯数据…...

告别变量地狱:手把手教你用Simulink结构体管理复杂模型参数(附实战案例)

告别变量地狱:手把手教你用Simulink结构体管理复杂模型参数(附实战案例) 打开一个大型Simulink模型时,你是否曾被工作区里密密麻麻的变量列表吓到?Gain_A、Offset_B、Init_C...这些看似有规律的命名,随着模…...

【Docker 27跨架构镜像转换终极指南】:20年DevOps专家亲授arm64/x86双平台无缝构建与推送实战

第一章:Docker 27跨架构镜像转换的核心演进与定位Docker 27 引入了原生集成的 docker buildx bake 与增强版 buildkit 调度器,将跨架构镜像构建从“多阶段手动交叉编译”推进至“声明式统一构建流水线”。其核心演进体现在三方面:构建上下文感…...

二维DFT图像频域分析:从基础原理到实战应用

前言 一维DFT我们已经玩明白了,知道它能把复杂信号拆成一堆正弦波。那二维DFT呢?简单说,就是把这个“拆解魔法”搬到了图像上。一张图片,其实也可以看作是二维信号,二维DFT就能把它拆解成无数个不同方向、不同频率的二…...

2026口碑靠前的备考增强记忆品牌榜单

这份口碑靠前的备考增强记忆品牌榜单是结合成分合规性、市场口碑、权威认证、场景适配性多个维度整理得出,能给备考人群选择脑营养补充产品提供清晰可靠的参考方向。这份口碑靠前的备考增强记忆品牌榜单的评选维度是什么?本次评选围绕三个核心指标筛选&a…...