MATLAB的addpath和rmpath函数增加或删除路径

在进行MBD建模开发时,模型生成代码时常需要加载一些其他的文件,例如代码生成模版文件cgt文件、模型所涉及的头文件,这个时候可以在模型的回调函数中使用addpath和rmpath函数加载和删除路径,例如设置模型的加载之前的回调函数在模型打开之前加载路径,在模型关闭之后的回调函数中删除路径。

图片

1.addpath函数

addpath函数功能:向搜索路径中添加文件夹。

语法addpath(folderName1,...,folderNameN)addpath(folderName1,...,folderNameN,position)addpath(___,'-frozen')oldpath = addpath(___)说明addpath(folderName1,...,folderNameN) 将指定的文件夹添加到当前 MATLAB会话的搜索路径的顶层。如果输入是由路径分隔符分隔的多个文件夹组成的集合,则会添加每个指定的文件夹。addpath(folderName1,...,folderNameN,position) 将指定的文件夹添加到 position 指定的搜索路径的最前面或addpath(___,'-frozen') 还会为所添加的文件夹禁用文件夹更改检测。为文件夹禁用文件夹更改检测后,MATLAB 将不会检测从 MATLAB 以外的地方对文件夹所做的更改。请将此语法与上述语法中的任何参数结合使用。可以按任一顺序指定 '-frozen' 和 position。此外,oldpath = addpath(___) 返回在添加指定文件夹之前的路径。

文件路径就是文件在电脑中的位置,表示文件路径的方式有两种,相对路径和绝对路径。

相对路径是相对于当前工作目录或另一个指定的起始位置来指定文件或目录的位置。它不包括完整的文件系统路径,而是描述文件相对于当前位置的位置。相对路径可以使用特定的记号来指示位置关系,比如 ../ 表示父目录,./ 表示当前目录等。相对路径的优势在于它们更加简洁,且在文件移动或重命名时更具灵活性。

绝对路径是一个完整的路径,从文件系统的根目录开始一直到指定文件或目录的路径。它提供了完整的位置信息,不依赖于当前工作目录或其他环境变量。由于提供了确切的位置,因此绝对路径在不同的环境中更加可靠。

名称

定义

优势

劣势

相对路径

相对于一个指定的起始位置来指定文件或目录的位置

更加简洁、更具灵活性

在不同的工作目录下可能不稳定

绝对路径

一个完整的路径

不依赖当前工作目录或其他环境变量,更加可靠

较为冗长、不灵活

(1)输入参数

输入参数folderName1,...,folderNameN — 要添加到搜索路径的文件夹名称。数量类型是字符向量 | 字符串标量数据类型(char | string)。要添加到搜索路径中的文件夹名称,指定为一个或多个字符向量或字符串标量。对每个文件夹使用完整的路径名。​​​​​​​

绝对路径示例:'c:\matlab\work'相对路径示例:'/home/user/matlab'多个相对路径示例:'/home/user/matlab','/home/user/matlab/test'

MATLAB 会先将所有包含 '.'、'..' 和符号链接的路径名称解析为其目标位置,然后再将其添加到路径,这样操作可以确保 MATLAB 路径中的每个条目代表一个唯一的文件夹位置。例如,如果指定 c:\matlab\..\work,MATLAB 会将文件夹 c:\work 添加到路径中。

(2)position属性

position属性表示在搜索路径上的位置,'-begin' (默认) | '-end'。其中'-begin' 是将指定文件夹添加到搜索路径的顶层,'-end'是将指定文件夹添加到搜索路径的底层。

(3)提示

  • 要保存新修改的搜索路径以用于将来的 MATLAB 会话,请使用 savepath 函数。

  • 要在启动时以编程方式修改搜索路径,请在 startup.m 文件中使用 addpath 语句。

  • 如果在局部函数内使用 addpath,则从该函数返回程序控制后会保留路径更改。即路径更改的范围是全局的。

2.rmpath函数

rmpath函数功能从搜索路径中删除文件夹。​​​​​​​

语法rmpath(folderName)说明rmpath(folderName) 从搜索路径中删除指定文件夹。如果 folderName 是由路径分隔符分隔的多个文件夹的集合,则每个指定的文件夹都将被删除。

3.genpath函数

genpatch函数功能生成搜索路径。​​​​​​​

语法p = genpathp = genpath(folderName)说明p = genpath 返回一个包含搜索路径的字符向量,该搜索路径中包含 matlabroot/toolbox 下的所有文件夹和子文件夹,包括空的子文件夹。p = genpath(folderName) 返回包含搜索路径的字符向量,该搜索路径包括 folderName 和 folderName 下的多级子文件夹。p 不包含名为 private 的文件夹、以 @ 字符开头的文件夹(类文件夹)、以 + 字符开头的文件夹(包文件夹)、名为 resources 的文件夹或所有这些文件夹中的子文件夹。

4.实例程序

test_addpath_main.m程序​​​​​​​​​​​​​​:

clc;%清除命令行窗口命令
clear all;%清除工作区变量
close all;%关闭图形窗口
pwd %返回当前的工作路径
%绝对路径
path = 'D:\MATLAB2021A\bin\微信公众号2024\MATLAB的addpath和rmpath函数\add_path_test';
addpath(path);
plot3dio();
rmpath(path);addpath(path,'-begin');
rmpath(path);
%相对路径
path5 = '.././add_path_test/1';
addpath(genpath(path5))%将文件夹及其子文件夹添加到搜索路径
plot3dio5();
rmpath(path5);

plot3dio.m程序:​​​​​​​

function plot3dio()
rng(40);
data = rand(100,3);
x = data(:,1);
y = data(:,2);
z = data(:,3);figure;
plot3(x,y,z)
xlabel('x');
ylabel('y');
zlabel('z');
end

plot3dio5.m程序:​​​​​​​

function plot3dio5()
rng(5);
data = rand(100,3);
x = data(:,1);
y = data(:,2);
z = data(:,3);figure;
subplot(2,1,1);
scatter3(x,y,z,'b')
xlabel('x');
ylabel('y');
zlabel('z');
subplot(2,1,2);
scatter3(x,y,z,'filled')
xlabel('x');
ylabel('y');
zlabel('z');
end

​​​​​​​运行结果如下所示:

图片

图片

程序运行之前的路径:

图片

程序运行之后的路径:

图片

图片

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【FPGA开发】Vivado自定义封装IP核,绑定总线

支持单个文件的封装、整个工程的封装,这里用单个文件举例。 在文件工程目录下,自建一个文件夹,里面放上需要封装的verilog文件。 选择第三个,指定路径封装,找到文件所在目录 取个名,选择封装IP的路径 会…

前端速通(CSS)

1.CSS介绍 1.什么是CSS? CSS(Cascading Style Sheets,层叠样式表)是一种用于控制网页的外观和布局的样式表语言。它与HTML(超文本标记语言)紧密配合,负责页面元素的样式定义,如字体、颜色、尺…

Android 13 编译Android Studio版本的Launcher3

Android 13 Aosp源码 源码版本 Android Studio版本 Launcher3QuickStepLib (主要代码) Launcher3ResLib(主要资源) Launcher3IconLoaderLib(图片加载,冲突资源单独新建) 需要值得注意的是: SystemUISharedLib.jar 有kotlin和java下的,在 Lau…

idea添加版权信息

1、添加Copyright Profiles 打开Settings -> Editor -> Copyright -> Copyright Profiles -> 新增 Copyright (c) 【你的版权信息】 【开始年份】-${today.year}. All rights reserved.如: Copyright (c) by cwp 2024-${today.year}. All rights rese…

【计算机网络】多路转接之poll

poll也是一种linux中的多路转接方案(poll也是只负责IO过程中的"等") 解决:1.select的fd有上限的问题;2.每次调用都要重新设置关心的fd 一、poll的使用 int poll(struct pollfd *fds, nfds_t nfds, int timeout); ① struct pollfd *fds&…

【C语言】深入剖析 C 语言中数组与指针的紧密联系及高效应用

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 💯前言💯例一:指针偏移遍历数组1.1 代码回顾1.2 代码分析1.3 理论扩展:数组与指针的关系1.4 数组与指针的应用场景 💯例二:自定义…

基于SpringBoot的数据结构系统设计与实现(源码+定制+开发)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

算法训练-双指针

双指针 leetcode392. 判断子序列 法一:动态规划 法二:双指针 leetcode876. 链表的中间结点 法一:链表数组 法二:快慢指针 leetcode160. 相交链表 法一:双指针 leetcode167. 两数之和 II - 输入有序数组 法一&…

零基础学指针(上)

系列文章目录 🎈 🎈 我的CSDN主页:OTWOL的主页,欢迎!!!👋🏼👋🏼 🎉🎉我的C语言初阶合集:C语言初阶合集,希望能…

shell编程之sed

sed 是一种流编辑器,它是文本处理中非常有用的工具,能够完美的配合正则表达式使用,处理时,把当前处理的行存储在临时缓冲区中,称为模式空间,接着用sed 命令处理缓冲区中的内容,处理完成 后&…

一文学习开源框架OkHttp

OkHttp 是一个开源项目。它由 Square 开发并维护,是一个现代化、功能强大的网络请求库,主要用于与 RESTful API 交互或执行网络通信操作。它是 Android 和 Java 开发中非常流行的 HTTP 客户端,具有高效、可靠、可扩展的特点。 核心特点 高效…

多目标优化算法:多目标极光优化算法(MOPLO)求解ZDT1、ZDT2、ZDT3、ZDT4、ZDT6,提供完整MATLAB代码

一、极光优化算法 极光优化算法(Polar Lights Optimization, PLO)是2024年提出的一种新型的元启发式优化算法,它从极光这一自然现象中汲取灵感。极光是由太阳风中的带电粒子在地球磁场的作用下,与地球大气层中的气体分子碰撞而产…

【贪心算法第二弹——2208.将数组和减半的最小操作数】

1.题目解析 题目来源 2208.将数组和减半的最小操作数——力扣 测试用例 2.算法原理(贪心策略) 3.实战代码 class Solution { public:int halveArray(vector<int>& nums) {priority_queue<double> hash;double sum 0.0;for(auto e : nums){hash.push(e);sum …

2024最新python使用yt-dlp

2024最新python使用yt-dlp下载YT视频 1.获取yt的cookie1&#xff09;google浏览器下载Get cookies.txt LOCALLY插件2&#xff09;导出cookie 2.yt-dlp下载[yt-dlp的GitHub地址](https://github.com/yt-dlp/yt-dlp?tabreadme-ov-file)1&#xff09;使用Pycharm(2024.3)进行代码…

深入理解下oracle 11g block组成

深层次说&#xff0c;oracle数据库的最少组成单位应该是块&#xff0c;一般默认情况下&#xff0c;oracle数据库的块大小是8kb&#xff0c;其中存储着我们平常所需的数据。我们在使用过程中&#xff0c;难免会疑问道&#xff1a;“oracle数据块中到底是怎样组成的&#xff0c;平…

2024年12月Gesp七级备考知识点拾遗第一期(图的定义及遍历)

目录 总序言 知识点拾遗​编辑 度数 环 二叉树 图的遍历 深度优先 广度优先 连通与强连通 有什么不同 构成分别至少需要几条边&#xff08;易错题&#xff09;&#xff1f; 无向连通图 有向强连通图 完全图 什么是完全图 无向完全图最少边数 有向完全图最少边…

家庭智慧工程师:如何通过科技提升家居生活质量

在今天的数字化时代&#xff0c;家居生活已经不再只是简单的“住”的地方。随着物联网&#xff08;IoT&#xff09;、人工智能&#xff08;AI&#xff09;以及自动化技术的快速发展&#xff0c;越来越多的家庭开始拥抱智慧家居技术&#xff0c;将他们的家变得更加智能化、便捷和…

图像处理实验报告

实验一 图像处理的MATLAB基础 实验目的&#xff1a;熟悉数字图象处理的基本软件工具和操作 实验内容&#xff1a;Matlab应用复习&#xff0c;矩阵产生、操作&#xff1b;矩阵运算以及字符运算。 1.利用增量产生向量[0,2,4,6,8,10]。 2.利用magic(n)函数产生7维魔鬼矩阵A&am…

SpringBoot+SpringCloud面试题整理附答案

什么是SpringBoot&#xff1f; 1、用来简化spring初始搭建和开发过程使用特定的方式进行配置(properties或者yml文件) 2、创建独立的spring引用程序main方法运行 3、嵌入Tomcat无需部署war包&#xff0c;直接打成jar包nohup java -jar – & 启动就好 4、简化了maven的配置 …

Linux之管道,system V的共享内存,消息队列和信号量

Linux之管道&#xff0c;systemV共享内存和信号量 一.进程间通信1.1进程间通信的目的1.2进程间通信的方式 二.管道2.1管道的概念2.2匿名管道2.3命名管道 三.system V3.1共享内存3.2消息队列3.3信号量 一.进程间通信 在我们之前有关Linux指令的学习时我们使用过“|”这个命令&a…