基于MCR的MATLAB使用案例

article/2025/1/18 15:39:04

写在前面

众所周知MATLAB是一款强大的数学软件,便捷的数值计算能力以及对众多的算法的集成,在科研和工程中得到了广泛的应用。产品中使用了MATLAB程序,就必须要求安装MATLAB, 可是交付给用户使用来说不太适合,当然不仅仅是因为MATLAB是商业软件。

本文将介绍如何利用MCR(MATLAB Compiler Runtime)在未安装MATLAB的机器上运行MATLAB程序。

软件

计算机A:LINUX(deepin) + MATLAB(R2017b)

计算机B:   LINUX (deepin)    + MCR(v93)

其中MATLAB版本和MCR版本要匹配,MCR可以在Mathworks官网下载并免费使用。

编译matlab程序为独立应用

在计算机A上创建工作目录,在该目录中创建add.m、prod.m、sum_prod.m文件。

add.m

function [c] = add(a,b)c = a + b;
end

prod.m

function [c] = prod_a(a,b)c = a.*b;
end

sum_prod.m

a = [1,2,3,4,5];
B = [6,7,8,9,10];
sum = add(a,b);
prod = prod_a(a,b);
disp(sum);
disp(prod);

在MATLAB命令行执行如下命令:

>> deploytool

接下来选择编译器,

添加脚本文件

单选框选择 “Runtime downloaded from web”, 接下点击package, 出现如下对话框

选择编译结果的存放目录,选好后,编译开始执行,稍等片刻,输出结果。在sum_prod目下有三个子目录,选择将for_redistribution_files_only复制到计算机B上。

for_redistribution_files_only里面的文件如下:

安装MCR

根据计算机A上的的MATLAB版本到Mathworks官网下载对应版本的MCR,或者在计算机A上MATLAB命令行中执行如下命令:

>> mcrinstaller

显示mcrinstaller所在目录,直接复制到计算机上安装。

安装步骤:

  1. 解压MCRInstaller.zip
  2. 使用sudo ./install 安装,出现界面,默认即可(会提示设置环境变量)
  3. 设置环境变量

设置换环境变量

命令行输入:

sudo  gedit /etc/profile

在文件最后添加,如下

在linux 命令行下输入:

source /etc/profile

使环境变量生效

注:切换到for_redistribution_files_only目录,查看readme.txt,其实关于MCR的相关配置,以及使用方式都在这里说明了。

运行编译好的独立程序

有两种运行方式(都是每次开启一个终端必须重新设置或者使环境变量生效), 前提切换到可执行文件所在目录。

  • 第一种
  1. 之前已经设置过环境变量了(手动),现在只需要在终端中输入使之生效:

 >> source /etc/profile

     2. 在终端输入:

>> ./sum_prod

     3. 运行结果如下

  • 第二种(不需要手动设置环境变量)
  1. 具体的在Linux命令行输入如下:

./run_sum_prod.sh /usr/local/MATLAB/MATLAB_Runtime/v93/

     2. 运行结果如下:

    上述方法在实际使用时多少有些麻烦,如何在进入系统时,让系统自己将上述环境变量设置好呢?

进入系统自动设置环境变量

可以通过更改.bashrc文件实现在每次登陆系统时将环境变量自动设置好

/etc/bashrc

~/.bashrc


http://chatgpt.dhexx.cn/article/lqxlKovJ.shtml

相关文章

MATLAB 使用GUI设计简单的计算器

文章目录 1.准备工作2.使用GUI功能创建计算器界面2.1 打开GUI设计界面2.2 编辑运行框2.3 设置按钮 3.为每个按钮设定函数功能4.结果演示5.总结与反思 1.准备工作 本文使用的版本是Matlab2018b。 了解GUI:图形用户界面(Graphical User Interface&#xf…

MATLAB使用git管理代码

1、安装git(一路next就行) Git - Downloads (git-scm.com)https://git-scm.com/downloads 2、打开MATLAB,在你想要管理的代码文件右键,找到源代码管理,设置远程库的地址,就是你在github或者gitee上创建的…

什么是耦合、紧耦合、松耦合

一、耦合 耦合是两个或多个模块之间的相互关联。在软件工程中,两个模块之间的耦合度越高,维护成本越高。因此,在系统架构的设计过程中,应减少各个模块之间的耦合度,以提高应用的可维护性。 二、紧耦合 紧耦合架构本质…

java什么是耦合_在JAVA编程中什么叫耦合?

展开全部 耦合性是编程中的一个判断代码模块构成质量的属性,不影响已有功能,但影响未来62616964757a686964616fe78988e69d8331333365633838拓展,与之对应的是内聚性。 耦合性:也称块间联系。指软件系统结构中各模块间相互联系紧密…

什么是耦合,什么是内聚

耦合 有 A 和 B 两个 element。当修改了 A 的时候,B 必须被修改,那么两者就耦合了。 在耦合的定义里没有 element 之间的包含关系。耦合是两两之间的,不是父子之间的 耦合差不多就是静态类型的引用关系,那种可以被编译器报错的…

耦合是什么 耦合有哪些种类

耦合是对一个软件结构内不同模块之间互联程度的度量。耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。 模块间的耦合度强烈影响着系统的可理解性、可测试性、可靠性和可维护性。 耦合程度最低:两个模块每个…

python copy()和deepcopy()解释(import copy)

对于简单的 object,用 shallow copy 和 deep copy 没区别 复杂的 object, 如 list 中套着 list 的情况,shallow copy 中的 子list,并未从原 object 真的「独立」出来。也就是说,如果你改变原 object 的子 list 中的一…

解决使用copy.deepcopy()拷贝Tensor或model时报错只支持用户显式创建的Tensor问题

模型训练过程中常需边训练边做validation或在训练完的模型需要做测试,通常的做法当然是先创建model实例然后掉用load_state_dict()装载训练出来的权重到model里再调用model.eval()把模型转为测试模式,这样写对于训练完专门做测试时当然是比较合适的&…

Python中copy()和deepcopy()的区别

同样是copy,二者有什么不同呢今天我们就一探究竟!!! 关于copy()和deepcopy()的第一篇博客 初学编程的小伙伴都会对于深浅拷贝的用法有些疑问,今天我们就结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~…

python deepcopy

1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。 2. copy.deepcopy 深拷贝 拷贝对象及其子对象 一个很好的例子: import copya [ 1 , 2 , 3 , 4 , [ a , b ]] # 原始对象 b a # 赋值,传对象的引用 c copy.…

Python copy与deepcopy(深浅复制)

Python深浅复制 一般对象的复制复杂对象的复制 最近遇到了有关Python中的copy与deepcopy问题,之前再Java里面好像也遇到了深浅复制的问题,但是Python中的深浅复制还不是很熟,就简单了解了一下它们2个的差别,可以供大家参考&#x…

python copy()和deepcopy()解释(浅拷贝、深拷贝)

对于简单的 object,用 shallow copy 和 deep copy 没区别 复杂的 object, 如 list 中套着 list 的情况,shallow copy 中的 子list,并未从原 object 真的「独立」出来。也就是说,如果你改变原 object 的子 list 中的一…

python学习 - copy模块的浅复制(copy)与深复制(deepcopy)

python学习 - copy模块的浅复制(copy)与深复制(deepcopy) 简介copy.copy()详解copy.deepcopy()详解 简介 在使用列表或者字典进行传递参数的时候,可能会遇到函数改变了列表的值,但是不希望印象原来列表中的…

python中copy()和deepcopy()详解

参考文章 http://iaman.actor/blog/2016/04/17/copy-in-python **首先直接上结论: —–我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在。所以改变原有被复制对象不会对已经复制出来的新对象产生影响。 —–而浅…

不懂copy与deepcopy的区别?这一篇就够了

背景 在运用Python进行开发代码过程中,会遇到变量复制备份的场景,但并没有得到预期的结果,例如下面的例子: lista [a, b, [1, 2, 3]] listb lista.copy() lista[2].append(4)print(lista) # [a, b, [1, 2, 3, 4]] print(list…

浅拷贝(shallow copy)和深拷贝(deep copy)

浅拷贝(shallow copy):只负责克隆按值传递的数据(比如基本数据类型、String类型) 深拷贝(deep copy):除了shallow copy的值外,还负责克隆引用类型的数据,基本…

js深拷贝deepCopy教程:支持循环引用、类型不丢失、可扩展、可定制

目录 1. 背景2. 简介3. 安装方式 3.1. 方式1&#xff1a;通过 npm 安装3.2. 方式2&#xff1a;直接下载原代码3.3. 方式3&#xff1a;通过<script>标签引入 4. 教程 4.1. API简介4.2. 基本使用4.3. 拷贝函数4.4. 指定拷贝深度4.5. 循环引用4.6. 保持类型信息4.7. 拷贝不可…

深入理解Python深拷贝(deepcopy)、浅拷贝(copy)、等号拷贝----看了还不懂找我

编程中难免会遇到copy&#xff08;浅拷贝&#xff09;与deepcopy&#xff08;深拷贝&#xff09;问题&#xff0c;一不小心就会掉进坑中了&#xff0c;或许很多人只知道有深浅拷贝&#xff0c;但是你又知道copy和""拷贝有什么区别么&#xff1f;也许很少有人对二者的…

Python-copy()与deepcopy()区别

最近在实习&#xff0c;boss给布置了一个python的小任务&#xff0c;学习过程中发现copy&#xff08;&#xff09;和deepcopy&#xff08;&#xff09;这对好基友实在是有点过分&#xff0c;搞的博主就有点傻傻分不清啊&#xff0c;但是呢本着一探到底的精神&#xff0c;还是要…

三分钟入门大数据之什么是用户画像?

哈喽&#xff0c;大家好&#xff0c;我是汉斯老师。近几年来&#xff0c;互联网行业由于较高的薪资收入&#xff0c;受到许多人的追捧。很多年轻的学子&#xff0c;或是其他行业的有志青年&#xff0c;都想要投身到这个行业中来。然而一方面受到“互联网寒冬”的影响&#xff0…