我是靠谱客的博主 明理荔枝,最近开发中收集的这篇文章主要介绍matlab 路径传递,Matlab: 路径的操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

添加相对路径

在matlab中当代码很多时常常将结果存在不同的文件夹下面,常常使用相对路径对函数进行调用,但有时会存在问题。举个栗子:

代码结构如下:

/codes/A/AA/code1.m

/codes/A/lib_A/lib1.m

/codes/B/BB/code2.m

/codes/B/lib_B/lib2.m

代码的依赖关系如下:

code1.m 依赖lib1.m

code2.m 依赖lib2.m和code1.m

小麻雀栗子如下:

code1.m

function code1(a,b)

addpath('../lib_A/');

c=[a,b];

lib1(c);

end

lib1.m

function lib1(string_name)

print(string_name);

end

lib2.m

function str_name=lib2(number_name)

str_name=['00',num2str(number_name)];

end

code2.m

addpath('../lib_B/');

shot1=12345;

shot2=39045;

str1=lib2(shot1);

str2=lib2(shot2);

addpath('../../A/AA/');

code1(str1,str2);

测试运行结果:

意料之外的,会出现报错:

Undefined function or variable 'lib1'.

Error in code1 (line 5)

lib1(c);

出现这个错误的原因是运行的文件code2.m位于/code/B/BB/位置,这个是进行相对路径搜索的原点。

通过执行addpath('../lib_B/')可以正确的加载lib2.m,运行addpath('../../A/AA')也可以正确的地加载code1.m

但是在调用code1.m的过程,运行这句加载语句却出现了错误,addpath('../lib_A/');

这是因为虽然我们已经调用了code1.m但是此时的搜索原点仍然是以主调函数code2.m为基准的。相当于在/code/B/BB/的路径下addpath('../lib_A/'),这样自然找不到lib1.m。

要解决这个问题,可以在code2.m的文件中添加lib1.m所在的位置。addpath('../../A/lib_A/'),这样就可以正确的运行code2.m了。

当然,这个解决方法并不是很令人满意,因为每次从外部调用函数的时候,都要额外添加该函数所依赖的路径。如果可以使被叫函数自动根据自己的位置调用自身所依赖的路径,那么一定会方便很多。如果园子里的大神有什么解决方案,欢迎留言支招。

Matlab命令——目录操作(windows&Linux)

Matlab命令——目录操作(windows&Linux) 1. filesep用于返回当前平台的目录分隔符,Windows是反斜杠(),Linux是斜杠(/).有时此命令结合ispc命令使 ...

Node.js文件系统、路径的操作详解

17173 17173 2 75 2014-12-12T05:06:00Z 2014-12-12T05:06:00Z 21 2735 15595 www.17173.com 129 36 18294 ...

图像卷积、相关以及在MATLAB中的操作

图像卷积.相关以及在MATLAB中的操作 2016年7月11日 20:34:35, By ChrisZZ 区分卷积和相关 图像处理中常常需要用一个滤波器做空间滤波操作.空间滤波操作有时候也被叫做卷积滤 ...

Node.js文件系统、路径的操作函数

Node.js文件系统.路径的操作函数 目录 Node.js文件系统.路径的操作函数 1.读取文件readFile函数 2.写文件 3.以追加方式写文件 4.打开文件 5.读文件,读取打开的文件内容到 ...

Visual Studio 控制台应用程序 同时使用OpenCV和matlab mat文件操作

matalb具有灵活的图像处理,代码编写起来简洁而高效.而OpenCV具有很多成熟的计算机视觉算法,能够处理很多实时的识别处理等问题,而且代码运行起来效率很高.所以如何结合两者之间的优点,是让很多学术 ...

(转)AIX下的MPIO、RDAC、SDDPCM多路径软件操作 (AIX下的MPIO,查看AIX下hdisk与盘柜卷lun的对应关系)

AIX下的MPIO.RDAC.SDDPCM多路径软件操作 (AIX下的MPIO,查看AIX下hdisk与盘柜卷lun的对应关系) 原文:http://blog.163.com/huangbao_007 ...

matlab常用目录操作

总结matlab下常用到的目录操作 添加当前文件夹及其子文件夹至搜索路径 % add path rootDir = fileparts(mfilename('fullpath')); addpath( ...

MATLAB基础指令操作

由于课程实验需要学习使用了MATLAB,在此记录一下MATLAB的基本操作和命令,供参考与查阅. 学习过程中的资料也链接如下: MATLAB矩阵运算:https://wenku.baidu.com/v ...

python - os.path,路径相关操作

python处理系统路径的相关操作: # -*- coding: utf-8 -*- import os # 属性 print '__file__: %s' % __file__ # 绝对路径(包含文 ...

随机推荐

mono for android学习过程系列教程(4)

今天要讲的事情是构建安卓程序的UI界面. 首先给大家上点小点心,如图: 上面就是我们界面的设计模块,仔细看中间大块的下方,有一个Source,这就类似webform里面的设计和源代码界面. 在这个页面 ...

Python 登录系统

---------------------------------------------------------------------------------------- 该程序主要实现了以下3 ...

网络流dinic实现总结

太羞耻了,搞了半天居然没发现自己写的不是dinic,直到被一道时限紧的题目卡掉才发现 int dfs(int now,int flow,int sum) { if(now==n) return flo ...

JSON格式互转集合

在工作中我们经常会遇到格式转换的问题,有的时候是将JSON转换成DataTable.DataSet或是List等,也有可能将DataTable.DataSet或是List转换成JSON的,抽了点时间把 ...

GATK使用说明(一)

1. 官方网址 https://software.broadinstitute.org/gatk/ 2. 下载Latest version: 3.7 3. FileZilla 上传至服务器,解压 ta ...

jdbc基础 (一) MySQL的简单使用

前段时间学习了jdbc,正好利用这几篇文章总结一下. JDBC 可做三件事:与数据库建立连接.发送操作数据库的语句并处理结果. 而程序首先要做的就是加载数据库驱动,这里我使用的是mysql: Stri ...

关于通过JS识别浏览器类型的方法

JS检测浏览器类型的方法   网络上一般采用navigator.userAgent判断浏览器标识的办法,但是有个麻烦的问题是IE11不断升级之后,IE11的userAgent变成: "Moz ...

Android内存管理(4)*官方教程 含「高效内存的16条策略」 Managing Your App's Memory

Managing Your App's Memory In this document How Android Manages Memory Sharing Memory Allocating and ...

Day 5内存管理,定义变量

昨日内容回顾 python的2种执行方式 交互式 写一句翻译一句 优点:能及时发现bug,及时调试 缺点:关即消失,不能保存 命令行式 优点:可以永久保存 缺点:无法及时看到结果 python3 c: ...

BAT:通过连接符处理判断OR的关系

使用情况说明: 适用于对某个文件夹下不同的文件夹(名称)做不同的处理,但存在需要对其中多个文件夹(名称)进行相同处理的情况 例子中的目录结构: .1.2.3 -- 文件夹.a.b.c -- 文件夹 ...

最后

以上就是明理荔枝为你收集整理的matlab 路径传递,Matlab: 路径的操作的全部内容,希望文章能够帮你解决matlab 路径传递,Matlab: 路径的操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部