【问题标题】:importing variables from one file to another MATLAB将变量从一个文件导入另一个 MATLAB
【发布时间】:2013-10-04 06:22:11
【问题描述】:

我有 2 个 matlab 程序:prog1.m 和 prog2.m

我必须在两个程序中使用二维矩阵 M。

我已经在 prog1.m 中加载了矩阵(手动从文本文件中加载)。

我必须运行这两个程序~100 次(每次针对不同的矩阵)。所以现在我已经运行了 prog1.m 100 次,每次都使用不同的矩阵。

现在轮到 prog2.m 但我不想再次手动加载矩阵。

我保存了(100 个副本)prog1.m,其中包含要在 prog2.m 中使用的 M。有没有一种方法可以将 M 从 prog2.m 加载到 prog1.m ?

我想在 prog2.m 中添加一些代码,它会自动从 prog1.m 加载 M 。 PS:我对 MATLAB 很陌生

【问题讨论】:

  • 您不能从 m 文件“加载”变量。但是,您可以从 mat 文件中保存并加载矩阵 M。您应该查看saveload 上的文档

标签: matlab import


【解决方案1】:

如果prog1prog2 还不是函数,请将它们重写为函数。例如,其中的第一行可能如下所示:

function [out1 out2] = prog1(M)
function out = prog2(M)

然后,编写第三个函数,给定文件名,加载数据,调用 prog1prog2 并可选择以适当的形式保存数据(您可以使用 filepartsfullfile 自动创建基于输入的新文件名 - 例如,给定 data101.txt,返回 data101_proc.mat。此类函数的基本内容将遵循以下几行:

function M = prog3(fname)

M = load(fname); % or whatever method is required for loading this data 

%call prog1 and prog2
[out1 out2] = prog1(M);
out3 = prog2(M);

%make new filename
[fpath,fname2,ext] = fileparts(fname);
fname_out = fullfile(fpath, [fname2,'_out','.mat']);

%save data - depends on what outputs are and what you need to do with them later
save(fname_out, 'out1','out2','out3','M');

end

最后,正如 babaea 所说,你可以使用lsdir,列出你要使用的文件,然后创建一个循环,依次在每个文件上调用上述函数。

【讨论】:

    【解决方案2】:

    最有效的方法是使用 textscan 直接从文本文件中读取:

    http://www.mathworks.co.uk/help/matlab/ref/textscan.html

    如果文本文件中的格式相同,您可以一次读取一个文件,执行您的过程,然后更改名称并再次运行。

    您可以通过更改文件的名称来使该过程更加自动化,在您的主程序周围循环动态读取数据。但是执行此操作的方法取决于文本文件的名称。

    【讨论】:

      猜你喜欢
      • 2021-06-22
      • 2013-06-19
      • 2017-11-27
      • 2021-04-17
      • 1970-01-01
      • 2018-01-10
      • 2020-12-18
      相关资源
      最近更新 更多