如何在 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?的主要内容,如果未能解决你的问题,请参考以下文章