如何写出让人看不懂的MATLAB代码?

news2024/11/13 9:32:18

在这里插入图片描述最近呢有不少好奇的伙伴私下问咱这是怎么实现大幅度降低matlab代码可读性。于是咱准备将相关的资源分享给大家,这个工具的根来源于大神thrynae (Rik)公开分享一款名叫minify的小工具图片。

咱也不藏着掖着,其实大家用minify作为关键词检索,不仅能检索出大神的这款工具,还可以检索到降低python、JavaScript、R等编程语言代码可读性的其他实用性代码。

那有小伙伴不禁要问了图片要是没有记错的话,你这个可打自己脸的行为呀(PS:30多个实用matlab编程技巧)。前面教人写出排版工整的代码,后面又教人写出让人看不懂的代码,这不是神经错乱吗?

答案显然是否定的。虽写出可读性强的代码是作为程序员最基本的素养,对代码的维护也是大有裨益,但有些情况下写出让人看不懂的代码显然也是很有必要的。比方说您将代码分享给其他人,不想让别人能很快掌握您代码中的关键技术,那这个时候就很有必要了。

那有人就要问了,matlab写得代码不是可以用pcode加密后再分享吗?那咱可以肯定告诉您,如果您认为pcode加密是安全的,那就大错特错,相关的反编译工具网上一搜一大把。那把代码用pcode加密之后,再封装成exe发布分享,那不就安全了。恐怕又要让您失望了,目前matlab的封装工具并不支持直接封装pcode加密的文件(PS:咱目前找到一种解决方案可以封装pcode加密后的文件为exe文件,不久后就会分享给大家,敬请期待)。即便是您把代码封装成了exe文件,还是有办法把您的exe反编译为m文件,这样的工具网上也是存在的。就如同python封装一样,不管您用什么工具进行封装,总是能在网上找到一种工具把封装好的可执行文件反编译成源代码,这绝对不是危言耸听。

那既然不管怎么做,只要有人想要获得源代码它总是能够获得,那咱们还不如从写代码本身入手。如果分享的源代码让人看都看不懂,更别说后面的封装之后的代码了,这也是写出可读性极差代码的必要性之所在。

其实写出可读性差的代码其实是非常容易且与生俱来的,咱们可以想想咱们最开始写代码的时候那种意气风发、行云流水,就要那种感觉,那种自己写的过两天来看就看不懂那种。废话扯得够多了,还是直接上硬菜回到咱们的主题上来。

代码的可读性的好坏与四个因素息息相关:一、代码注释;二、变量命名;三、代码中一切可读的文本字符信息;四、代码块的布局。

咱今天分享的minify就能帮大家完成四个因素中的三个,即一、二、四。下面是用ChatGPT随便生成一段示例代码:
![在这里插入图片描述](https://img-blog.csdnimg.cn/d38e24f3c95d4d0baa345e42011135a9.png#pic_center
接下来咱用minify对其进行降可读性处理,处理后的代码如下:

v000 = rand(10);v001 = det(v000);v002 = inv(v000);fprintf('Determinant of A: %f\n', v001);
disp('Inverse of A:');disp(v002);figure;imagesc(v000);colorbar;title('Random Matrix A');
xlabel('Column Index');ylabel('Row Index');

不难发现,注释、变量和代码块都被混淆了。大家是否觉得这个也太小儿科了?这个代码一眼就能看明白的嘛。大家别忘这仅仅是几行代码,如果100行,一万行,一万个一万行这样的文件呢?您还能看明白嘛?比如就咱们那张封面图:
在这里插入图片描述怎么样?是否清晰透明?

想要获取minify源代码及相关测试文件的伙伴,点此获取。

参考资料:
[1] github.com/thrynae/minify
[2] matlabcentral/fileexchange/84717-minify

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

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

相关文章

学生成绩管理系统/学生信息管理系统

文章目录项目介绍一、技术栈二、项目功能介绍三、功能页面展示四、获取代码项目介绍 一、技术栈 编程语言:Java 技术栈:ServletJspJdbcEasyUIjQueryAjax面向接口编程 二、项目功能介绍 用户角色:学生、教师、系统管理员。; 管…

Nuxt 3.0 全栈开发

Nuxt 3.0 全栈开发 - 杨村长 - 掘金小册核心知识 工程架构 全栈进阶 项目实战,快速精通 Nuxt3 开发!。「Nuxt 3.0 全栈开发」由杨村长撰写,299人购买https://s.juejin.cn/ds/S6p7MVo/ 这门课我会全面讲解 Nuxt3 核心知识,然后…

【uni-app教程】一、UniAPP 介绍

一、UniAPP 介绍 (1) 什么是 UniAPP? uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到 iOS,Android,HS,以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉》等多个平台&#…

Docker之部署Canal

Canal 就是一个同步增量数据的一个工具。 目录概念Mysql开启binlog是否开启binlog开启binlog日志创建授权用户部署Canal拉取镜像挂载properties配置文件创建容器概念 canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析,提供增量数…

VTK例子--使用不同的vtkActor同时显示灰度图、体渲染、多边形

在实际项目中,常遇到不同类型的数据在同一个渲染窗口显示;如网格多边形与灰度图像的显示、体渲染与多边形的显示、体渲染与灰度图像的显示,如下面几张图的效果;多边形灰度图像体渲染多边形体渲染灰度图像如何实现这种混合显示的效…

怎么连接同局域网下的其他同事的mysql

**一、双击运行MySQL 5.5 Command Line Client。**然后输入你这个设备的MySQL的root账户密码 二、输入grant all privileges on *.* to root% identified by"root";(identified by后面的是别人要登入的密码)后回车。这样就设置局域网内所有ip都…

【NLP相关】NLP的发展历程

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

C++实现AVL树

目录 一、搜索二叉树 1.1 搜索二叉树概念 二、模拟实现二叉搜索树 2.1 框架 2.2 构造函数 2.2.1 构造函数 2.2.2 拷贝构造 2.2.3 赋值拷贝 2.3 插入函数 2.3.1 insert() 2.3.2 RcInsert() 递归实现 2.4 删除结点函数 2.4.1 Erase() 2.4.2 RcErase() 2.5 中序遍历…

Nuxt 3.0 全栈开发:五种数据获取 API 选择和应用最佳实践

Nuxt 3.0 全栈开发 - 杨村长 - 掘金小册核心知识 工程架构 全栈进阶 项目实战,快速精通 Nuxt3 开发!。「Nuxt 3.0 全栈开发」由杨村长撰写,299人购买https://s.juejin.cn/ds/S6p7MVo/ 上一讲我们学习了如何基于 API Route 编写接口&#…

12.2 基于Django的服务器信息查看应用(CPU信息)

文章目录CPU信息展示图表展示-视图函数设计图表展示-前端界面设计折线图和饼图展示饼图测试折线图celery和Django配合实现定时任务Windows安装redis根据数据库中的数据绘制CPU折线图CPU信息展示 图表展示-视图函数设计 host/views.py def cpu(request):logical_core_num ps…

【Unity VR开发】结合VRTK4.0:创建人工按钮

语录: 人生需要准备的,不是昂贵的茶,而是喝茶的心情。 前言: 按钮按下抬起是虚仿中经常会出现的功能,那么如何去表现呢,我们可以使用线性变换驱动器对人工按钮进行装箱,以对来自交互器的碰撞做…

Netty——心跳机制与断线重连

心跳机制与断线重连心跳机制IdleStateHandler客户端服务端测试正常情况异常情况总结断线重连为了保证系统的稳定性,心跳机制和断线重连可是必不可少的,而这两个在Netty中也是非常好实现的心跳机制 我们以客户端发送心跳为例,平时我们的心跳实…

linux常用命令介绍 04 篇——uniq命令使用介绍(Linux重复数据的统计处理)

linux常用命令介绍 04 篇——uniq命令使用介绍(Linux重复数据的统计处理)1. uniq 使用语法2. sort 简单效果3. uniq 使用例子3.1 不加任何选项3.1.1 不用 sort 效果3.1.2 uniq 结合 sort 一起使用3.2 使用选项例子3.2.1 去重打印(或打印不重复…

12 nuxt3学习(配置)

链接: nuxt3官网 nuxt简介 vue3技术栈:Nuxt3 是基于 Vue3 Vue Router Vite 等技术栈,全程 Vue3Vite 开发体验(Fast)。自动导包:Nuxt 会自动导入辅助函数、组合 API和 Vue API ,无需手动导入。 基于规范…

卡方分布、非中心卡方分布详解 (概念、求阈值方法、非中心化参数求解办法等)

一、相关概念 1、卡方分布 若n个 相互独立 的随机变量 ξ₁、ξ₂、……、ξn ,均服从 标准正态分布N(0,1),则这n个服从标准正态分布的随机变量的 平方和 构成一新的随机变量,其分布规律称为卡方分布(chi-squaredistribution);其中参数n称为自由度(通俗讲,样本中独立…

有关数据库的一级、二级、三级封锁协议

一级封锁协议 一级封锁协议是指,事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK).一级封锁协议可防止丢失修改,并保证事务T是可恢复的。在…

SpringBoot热部署

启动热部署 关于热部署 重启(Restart):自定义开发代码,包含类、页面、配置文件等,加载位置restart类加载器重载(ReLoad):jar包,加载位置base类加载器开启开发者工具 导…

gma 地理空间绘图:(1) 绘制简单的世界地图-2.设置经纬网

内容回顾 gma 地理空间绘图:(1)绘制简单的世界地图-1.地图绘制与细节调整 方法 AddGridLines(LONRange (-180, 180, 15), LATRange (-90, 90, 15), ShowLON True, ShowLAT True, LineColor ‘gray’, LineStyle (0, (6, 6)), LineWidth 0.3) 功能&#xf…

10种常见网站安全攻击手段及防御方法

在某种程度上,互联网上的每个网站都容易遭受安全攻击。从人为失误到网络罪犯团伙发起的复杂攻击均在威胁范围之内。 网络攻击者最主要的动机是求财。无论你运营的是电子商务项目还是简单的小型商业网站,潜在攻击的风险就在那里。 知己知彼百战不殆&…

MOA-30kV氧化锌避雷器泄露电流测试仪

一、概述 用于检测10kV及以下电力系统用无间隙氧化锌避雷器MOA阀电间接触不良的内部缺陷,测量MOA的直流参考电压(U1mA)和0.75 U1mA下的泄漏电流。该仪器将直流高压电源、测量和控制系统组成一体,元件浓缩在一个机箱内&#xff0c…