- MATLAB 2020数学计算从入门到精通
- 林凤涛等编著
- 1523字
- 2022-05-10 20:52:41
2.1 文件路径
任何一个文件的操作(如文件的打开、创建、读写、删除、复制等),都需要确定文件在磁盘中的位置。MATLAB与C语言一样,也是通过文件路径(文件夹位置)来定位文件的。不同的操作系统对路径的格式有不同的规定,但大多数的操作系统都支持树状目录结构,即有一个根目录(Root),在根目录下,可以存在文件和子目录(Sub Directory),子目录下又可以包含各级子目录及文件。
路径下的实际目录取决于文件的格式。
在Windows系统下,一个有效的路径格式如下。
drive:\<dir…>\<file or dir>
其中,<drive:>是文件所在的逻辑驱动器盘符,<dir…>是文件或目录所在的各级子目录,<file or dir>是所要操作的文件或目录名。MATLAB的路径输入必须满足这种格式要求。
当前文件夹是MATLAB用于查找文件的参考位置。该文件夹也可称为当前目录、当前工作文件夹或现有工作目录。
在MATLAB中,除了可以利用“当前文件夹”工具栏查看当前文件夹外,还可以执行命令,更改或显示当前文件夹。
1.显示搜索路径
MATLAB的操作是在它的搜索路径(包括当前路径)中进行的,如果调用的函数在搜索路径之外,MATLAB就会认为该函数不存在。初学者往往会遇到这种问题,明明自己编写的函数在某个路径下,但MATLAB却报告此函数不存在。其实只要把程序所在的目录扩展成为MATLAB的搜索路径就可以了。
搜索路径是文件系统中所有文件夹的子集。MATLAB使用搜索路径来高效地定位用于Math-Works产品的文件。
默认的MATLAB搜索路径是MATLAB的主安装目录和所有工具箱的目录,用户可以通过以下几种形式查看搜索路径。
1)在MATLAB中,path命令用于文件的搜索路径,该命令的使用格式见表2-1。
表2-1 path命令的使用格式
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/44_01.jpg?sign=1739405428-jkjcXTxVVe3qVdXjUTUeE0mLCyHiZgH6-0-5d8180da170172f06c4e42880318c8f8)
例2-1: 显示MATLAB下的搜索路径。
解: MATLAB程序如下。
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/44_02.jpg?sign=1739405428-qhStfyJyxKLJOtcJPczjPs0qbjv1UVvY-0-c54e9ba92e6ecc364fa5bfbc6ab86166)
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/44_03.jpg?sign=1739405428-iOSATQYKhrchk6HJmeX56XbcE2lwpy4L-0-64753a6a17a96e4bb8310bba57117481)
2)在命令窗口输入命令pathtool进入搜索路径设置对话框,如图2-1所示。单击“添加文件夹”按钮,或者单击“添加并包含子文件夹”按钮,进入文件夹浏览对话框。前者只把某一目录下的文件包含进搜索范围而忽略子目录,后者将子目录也包含进来。最好选择后者以避免一些可能的错误。
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/44_04.jpg?sign=1739405428-E8Lb2nXVGQ6e3MitonsJfaXhU04KCNxn-0-aa7bf38a5998d7042314bb8f69311a1f)
图2-1 “设置路径”对话框
在文件夹浏览对话框中,选择一个已存在的文件夹,或者新建一个文件夹,然后在“设置路径”对话框中单击“保存”按钮就将该文件夹保存进搜索路径了。
在MATLAB中,userpath命令用于查看或更改默认用户工作文件夹,该命令的使用格式见表2-2。
表2-2 userpath命令的使用格式
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/45_01.jpg?sign=1739405428-xf2pTWu6DpRiWlEipMHN0zWuMZkCC0o7-0-a2848cd1f6a76e2de027150abf703d31)
例2-2: 查看userpath文件夹。
解: MATLAB程序如下。
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/45_02.jpg?sign=1739405428-pKuwO56O36j08G2dyEr6Wnx5GRYx26nQ-0-f43290f6b9576e36b694b2a551a60b6e)
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/45_03.jpg?sign=1739405428-o35DLKGbSKrTJAKefZUNtwfz8GKD3pK7-0-21f456ca5d64e770c1e5c910246d17d3)
在MATLAB中,pathsep命令用于显示带分隔符的搜索路径,该命令的使用格式见表2-3。
表2-3 pathsep命令的使用格式
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/45_04.jpg?sign=1739405428-FHsiDkLu90CPCaIEJe2gSEqUva0qC6Ky-0-f34b9d47d7b8af8fdca59d2fd240c9de)
2.搜索路径文件夹
搜索路径上的文件夹顺序十分重要。当在搜索路径上的多个文件夹中出现同名文件时,MAT-LAB将使用搜索路径中最靠前的文件夹中的文件。
在MATLAB中,addpath命令用于从搜索路径中添加文件夹,不仅可以添加搜索目录,还可以设置新目录的位置。该命令的使用格式见表2-4。
表2-4 addpath命令的使用格式
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/45_05.jpg?sign=1739405428-IiwGeoJsGufJzx88DKvDyHNLtXvMwqeM-0-e413231c5fc68defc6607efbb0cf5766)
例2-3: 添加新的搜索路径。
解: MATLAB程序如下。
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/46_01.jpg?sign=1739405428-jlW0GwAhlyKzAUVZtknn4vcawGuOKlEV-0-918328f7a226728475a59d336ef46a46)
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/46_02.jpg?sign=1739405428-PT3Qn6LA8w37yOYlNpCYfekt5APVephs-0-59ff33034ee4cc58593c8c3e3b31dc9a)
在MATLAB中,savepath命令用于保存当前搜索路径,该命令的使用格式见表2-5。
表2-5 savepath命令的使用格式
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/46_03.jpg?sign=1739405428-XScVdEOe19OHBnRJDGxy0ZqtV3wKvcGX-0-975377aaaf9ebe27b774fe49c5b20eb7)
在MATLAB中,rmpath命令用于从搜索路径中删除文件夹,该命令的使用格式见表2-6。
表2-6 rmpath命令的使用格式
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/46_04.jpg?sign=1739405428-PtLtD25LHK0ZDSWuQbdhHslnGfUCZ5Re-0-6e4af64b598f138f2f56fafd7092f52c)
例2-4: 从搜索路径中删除文件夹。
解: MATLAB程序如下。
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/46_05.jpg?sign=1739405428-GtssF8QOIIPwukuad8tt8H2ouezD2xTI-0-8bb17012b77782bd9a90403341bcc239)
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/46_06.jpg?sign=1739405428-4IIa9ImtvxhNPLrY2DNm0D3yWOZ3dK6w-0-b7e795643daa55bad1b6246a559f3a11)
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/47_01.jpg?sign=1739405428-LjDZ3Q6LoWdNKn2Hz961guv3ZUFcPNuS-0-87c28ae1bec0ece7834577609bf4dfa9)
在MATLAB中,genpath命令用于生成路径名称,输出由MATLAB所有搜索路径连接而成的长字符串,该命令的使用格式见表2-7。
表2-7 genpath命令的使用格式
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/47_02.jpg?sign=1739405428-f9c1Pb4Def7PJb5Icjg3yq928lltOb1g-0-cac34c9680c652d75ae5499cc8a1e108)
3.确定文件和文件夹是否在搜索路径下
在MATLAB中,what命令列出当前文件夹的路径以及在当前文件夹中找到的与MATLAB相关的所有文件和文件夹。该命令的使用格式见表2-8。
表2-8 what命令的使用格式
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/47_03.jpg?sign=1739405428-vMQXFDjc370X8mOIiybHSueB2ArQGFiI-0-5061db0ed8308b8ece8c37af643c5572)
例2-5: 列出路径、文件和文件夹信息。
解: MATLAB程序如下。
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/47_04.jpg?sign=1739405428-Ooyj6VtfHbTWQwe5uo7N3XlH5hRRJA1v-0-541958fb5677d795c537205b09f07d3e)
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/47_05.jpg?sign=1739405428-6RSqejxOeMS9w4ujcBJ10kC319Nlh318-0-4a36483b84be2c3f36e8cceca40435b0)
在MATLAB中,which命令显示当前文件夹的路径,以及在当前文件夹中找到的相应文件的完整路径。该命令的使用格式见表2-9。
表2-9 which命令的使用格式
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/47_06.jpg?sign=1739405428-9NCspjlaQRrwS3gdi8Bo3Ls1xiAtjz8t-0-795ebc00db5cd6eeb300ed44f4c0c0f5)
如果item是一个重载的函数或方法,则which item只返回找到的第一个函数或方法的路径。
例2-6: 列出路径、文件和文件夹信息。
解: MATLAB程序如下。
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/48_01.jpg?sign=1739405428-KKQgdWv8QHXdPRFSx9pQUUexlWk9RDy1-0-b8ce7e901f8b065d34c97f68181357ba)
![](https://epubservercos.yuewen.com/403E7C/23083822209829806/epubprivate/OEBPS/Images/48_02.jpg?sign=1739405428-uHvLmEIH2phiKgvCEIDjpgDjN68RbH2D-0-784ba1dccb7630ac14a5f972f0d873e7)