代码之家  ›  专栏  ›  技术社区  ›  yurnero

MATLAB:“加载”一个快速访问功能

  •  0
  • yurnero  · 技术社区  · 6 年前

    我必须在MATLAB中编写一个相当复杂的函数;我们把这个叫做 f 我有一个主程序 main.m ,它利用 F

    如果我要遵循我过去的习惯,每当处理一个复杂的函数,比如 F ,我把它写在一个单独的文件中 f.m 在我需要的时候从内心呼唤它 主要的M .但对于手头的问题,我将不得不使用 F *很多*而且我担心从磁盘读取会减慢我的代码的速度,因为我的代码已经需要很长时间才能运行。

    所以我想问一下,这是否是一个合理的问题:即,每次我命令MATLAB(比如2017a或更高版本)使用时,它是否都会从磁盘读取数据 F 从内部 主要的M 还是做了更聪明的事?如果前者是真的,那么什么是有效的方法(时间方面)使用 F 从内部多次 主要的M ?如果 F 是迭代的(即。 F 调用自身)?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Cris Luengo    6 年前

    MATLAB在第一次调用函数M文件时加载并解析它,并将其存储在内存中,以便后续调用无需再次解析它。通过调用函数可以看出这是正确的 f 在干净的MATLAB会话中,使用 tic / toc 计时:

    tic; f(...); toc
    tic; f(...); toc
    

    第一次应该比第二次长一点。对于一个非常快速的函数,这个时差将非常大。对于一个耗时数秒的函数,这种差异可能毫无意义。

    您可以使用函数查看哪些函数加载到内存中 inmem

    当你打电话的时候 clear all or clear functions ,函数从内存中删除(其他形式的 clear 也可擦除功能)。避免使用这些。