将变量从一个文件导入另一个文件

时间:2013-10-04 06:22:11

标签: matlab import

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

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

我已经在prog1.m中加载了矩阵(从TEXT FILE手动加载)。

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

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

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

我想在prog2.m中添加一些代码,它会自动从prog1.m加载M. PS:我是MATLAB的新手

2 个答案:

答案 0 :(得分:1)

执行您想要做的事情的最有效方法是使用textscan直接从文本文件中读取:

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

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

通过更改主程序循环中动态读取数据的文件名,可以使过程更加自动化。但是这样做的方式取决于文本文件的名称。

答案 1 :(得分:0)

如果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,组成您要使用的文件列表,并创建一个循环,依次在每个文件上调用上述函数