【问题标题】:relative path for a MATLAB program called via the search path通过搜索路径调用的 MATLAB 程序的相对路径
【发布时间】:2014-10-13 21:00:22
【问题描述】:

我编写了一个带有 GUI(用于输入测量设置)和一个测量函数的 MATLAB 程序,当在 GUI 中按“开始”时调用该函数。 在两者中,我都为子函数使用单独的文件,以使其更易于阅读和维护。

文件结构看起来像这样

C:/../folder/+measure/measure.m  
C:/../folder/+measure/getData.m  
C:/../folder/+measure/plot.m   
C:/../folder/+measure/evalutate.m

C:/../folder/+measureGUI/getGuiData.m  
C:/../folder/+measureGUI/calcLimits.m  
C:/../folder/+measureGUI/saveGuiState.m  
C:/../folder/+measureGUI/loadGuiState.m    
C:/../folder/+measureGUI/background.png
C:/../folder/+measureGUI/guiState.mat

C:/../folder/measureGUI.fig  
C:/../folder/measureGUI.m

如果我在“文件夹”中执行 measureGUI.m,这可行。

saveGuiState.m 中关闭GUI 时,GUI 中的当前设置保存在guiState.mat 文件中

filename = '+autoProberGUI/guiState.mat';
save(filename, 'guiState');

并在下次打开 GUI 时加载(由loadGuiState.m)。

现在我必须将完成的程序放在网络驱动器上,并将文件夹添加到我的 matlab 搜索路径以调用 measureGUI.m
该程序可以运行,但由于相对路径(我猜该路径是相对于我当前所在的文件夹,而不是调用函数所在的文件夹),它无法保存或加载 guiState.mat。

我想我可以将子文件夹包含在搜索路径中,或者在filename 中使用绝对路径。但在我看来,这两种解决方案都不是正确的方法。

有没有办法让函数在驱动器上的位置指向文件的相对路径?相对于的意思

I:/..NetworkDrive../folder/+measureGUI/saveGuiState.m 

而不是我打电话给measureGUI.m的亲戚

(对不起英文不好,希望不要太混乱)

【问题讨论】:

    标签: matlab user-interface relative-path


    【解决方案1】:

    您可以使用pwd 获取当前工作目录的完整路径。 然后你可以连接[pwd '/folder/+measureGUI/saveGuiState.m']

    你可以使用which来定位函数。

    【讨论】:

    • 我以前用过,但不需要工作目录的路径。我需要函数存储位置的路径(在网络驱动器上)。
    • which 将返回函数的完整路径。
    • 完美,这就是我想要的
    猜你喜欢
    • 1970-01-01
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 2013-02-20
    • 1970-01-01
    • 2021-11-08
    相关资源
    最近更新 更多