【问题标题】:How to make scripts continue even if an in-built function (eg. dlmread()) fails?即使内置函数(例如 dlmread())失败,如何使脚本继续运行?
【发布时间】:2016-05-15 03:52:43
【问题描述】:

我需要使用dlmread 从 .txt 文件中读取大量数据,这在 80% 的情况下工作正常,问题在于 20% 的情况不在一般规则中,并且由于随机发生意外事件而导​​致 dlm 读取失败数据(主要是多个标题行(字符串)出现在行中)。

我需要的是一种在 dlmread 失败时通过跳过文件仍然使我的脚本运行的方法(比如通过存储一些布尔变量让我知道它已经失败) 要么 MATLAB 中另一个更通用的函数,我可以运行它来读取数据并自动执行它。

如果你能部分解决我的问题,那将是非常有帮助的。

PS:在某些情况下,行号在标题行所在的位置是可预测的。 我也尝试过 importdata,但时间太长了。

【问题讨论】:

    标签: database matlab import


    【解决方案1】:

    如果您有一个可能出错的函数,并且如果它出错,您想简单地跳过它,您应该使用关键字try(可能还有catch)。它有点像if / else,只是它不会在函数出错时崩溃。

    try
    dlmdata = dlmread('Invalid call')  % Will crash
    catch
    dlmdata = 0; 
    warning('Call to dlmread failed')
    end
    
    Warning: Call to dlmread failed 
    

    请注意,您不需要 catch 部分,但这是一种很好的做法。通常需要为变量赋值,以避免"Undefined function or variable 'dlmdata'"。

    【讨论】:

    • Maan 我想你让我很开心,我需要一些时间来确认,但它看起来是合法的,谢谢一百万。
    猜你喜欢
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多