如何在 Matlab 的保存/保存中拥有 $HOME?

Posted

技术标签:

【中文标题】如何在 Matlab 的保存/保存中拥有 $HOME?【英文标题】:How to Have $HOME in Matlab's save/saveas? 【发布时间】:2016-03-09 09:35:27 【问题描述】:

我已将我的计算分发到许多平台,因此我不能使用完整路径,而是使用相对路径,例如 $HOME。 代码

filename=strcat('$HOME/Images/',num2str(item);
save(strcat(filename,'.mat'),'masi');
saveas(her, strcat(filename,'.png'));

输出

Error using save
Cannot create '777.mat' because '$HOME/Images' does not exist.

Error in masiCool (line 98)
    save(strcat(filename,'.mat'),'masi');

向后闪烁\$HOME 也不起作用。


【问题讨论】:

【参考方案1】:

MATLAB 不会自动解析环境变量(例如 $HOME)。一般来说,如果需要环境变量的值,可以使用getenv.

homedir = getenv('HOME');

或者,在 *nix 上,您可以实际上只使用波浪号 (~) 在文件路径中表示用户的主目录。

folder = '~/Images';

但是,我通常只依靠Java 为我获取用户主目录,因为它可以在任何平台上正常工作。

homedir = char(java.lang.System.getProperty('user.home'));

然后,使用fullfile 将您想要的路径连接到用户的主目录。

filename = fullfile(homedir, 'Images', sprintf('%d.mat', item))

注意:如果您想在 HPC 或某些未使用 JVM 的 MATLAB 实例上执行此操作。 getenv 选项是最好的。在 Windows 上,您需要HOMEPATH 变量而不是HOME

【讨论】:

@Masi 我认为这是个人喜好,但我喜欢它,因为它允许做类似sprintf('%d.%d.%d.mat', 1,2,3) 而不是[num2str(1), num2str(2), num2str(3), '.mat'] 之类的事情【参考方案2】:

尝试使用完整路径而不是使用 $HOME。 $HOME 是系统命令,在 Matlab 中无法识别。

使用 \home\YOUR_USER_NAME 代替 $HOME。

提示:如果您必须在 Matlab 中使用系统命令,system() 是一个有用的功能。

【讨论】:

重点不是使用完整路径。我已将计算分布到多台计算机上,因此无法使用完整路径。

以上是关于如何在 Matlab 的保存/保存中拥有 $HOME?的主要内容,如果未能解决你的问题,请参考以下文章

Halcon如何保存仿射变换矩阵

matlab怎么保存 matlab如何保存

matlab中如何保存数据到指定文件夹中?

如何在matlab里保存以及打开变量

matlAB如何保存变量

matlab有函数能自动保存图吗