【问题标题】:MATLAB load not working with variable filename [duplicate]MATLAB负载不适用于变量文件名[重复]
【发布时间】:2018-07-01 18:26:11
【问题描述】:

我尝试在 MATLAB R2016a 中加载 .mat 文件。但是,当我创建文件名变量时,它失败了

使用加载出错 无法读取文件“文件名”。没有这样的文件或目录。

R2018a 的 documentation 声明文件名必须是

指定为字符向量或字符串

我做到了。我在 SO 上搜索了类似的问题,但它们都是由于输入错误,例如Error using load; Unable to read file matlab

复制代码:

clear all
mat1 = magic(5);
save mat1
clear mat1
load mat1 % working
clear mat1
filename = 'mat1.mat'; % tried with/without .mat
load filename % not working
  • 此错误的原因是什么?
  • 如何解决?

【问题讨论】:

  • 能否请反对者给出一个理由?我花了一些时间才弄清楚这一点。以前这里没有回答;鼓励自己回答问题:stackoverflow.com/help/self-answer
  • 我没有投反对票,但同样的问题经常被问到。
  • 感谢您的回复。我一定是使用了错误的搜索词来找不到前两个示例。第三个似乎是一个不同的问题。

标签: matlab


【解决方案1】:

经过进一步研究,我发现documentation (R2018a) 也声明了

load filename 是语法的命令形式。 [...] 当任何输入(例如文件名)是变量时,不要使用命令形式。

这回答了我的第二个问题。使用:

load(filename)

【讨论】:

    【解决方案2】:

    这个错误的原因是声明:

    load filename
    

    内部计算结果为:

    load('filename.mat')
    

    为了在您的示例中支持命令形式的语句,例如 load mat1。它失败了,因为文件filename.mat 显然不存在。

    在我看来,函数形式总是更安全。

    【讨论】:

    • 感谢您的回复。但是,如果这确实是原因,那么 filename = 'mat1';load filename(不带 .mat)之类的东西应该可以工作 - 但它不会。
    • @David load filename 计算结果为 load('filename.mat');不是load('mat1.mat'),因此它不应该工作。
    • 答案中的最后一句话是基于意见的
    • 是的,@SardarUsama 我对那句话做了修改。但是有没有什么情况下命令形式更安全呢?
    • 好的,好的。明白了。
    猜你喜欢
    • 2016-11-24
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    • 2018-09-05
    相关资源
    最近更新 更多