读取主m文件中的输入m文件

时间:2008-10-09 00:17:48

标签: matlab

喂, 我对MATLAB有疑问 我没有Matlab的经验,我想告诉我,如果我有一个输入文件(m文件),其中包含一些变量及其数字,即a = 5,b = 6,c = 7,我想使用那个m文件在另一个程序(主m文件)中,使用这些变量来计算S = a + b + c。如何在主文件中我可以读取输入文件?我应该使用哪些命令?第一行应该是什么?假设输入文件名为INP和主MAIN。 谢谢!

6 个答案:

答案 0 :(得分:6)

这在MATLAB中通常不是很好的做法。在您的示例中,包含输入变量的文件将是一个脚本。和你的主文件一样。如ScottieT812所建议的那样,当从另一个脚本运行一个脚本时,MATLAB不会出错,但在某些情况下会出现奇怪的错误。 (运行时编译有困难,跨脚本的变量名称冲突)

更好的选择是将输入脚本转换为返回感兴趣变量的函数

function [a,b c] = inputs
a = 5;
b = 6;
c = 7;

然后可以在main.m脚本中调用此函数。

% main.m
[a,b,c] = inputs;
s = a+b+c;

答案 1 :(得分:3)

对于这种东西(稍后容易调整的参数)我几乎总是使用结构:

function S = zark
    S.wheels = 24;
    S.mpg = 13.2;
    S.name = 'magic bus';
    S.transfer_fcn = @(x) x+7;
    S.K = [1 2; -2 1];

然后你可以返回大量数据,而不必像[a,b,c,d,e,f] = some_function;

那样做

关于结构的一个好处是你可以动态地解决它们:

>> f = 'wheels';
>> S.(f)

ans =

    24

答案 2 :(得分:2)

如果您的“输入”文件是m文件,只需使用“主”m文件中的文件名。例如,您可能有一个名为input.m的文件,如下所示:

% File: inputs.m
a = 5;
b = 6;
c = 7;

然后,您可以在main.m文件中使用它,如下所示:

% File: main.m
inputs;
S = a + b + c;

答案 3 :(得分:2)

听起来您希望获得脚本使用的一些全局配置信息。通常,创建函数并将值作为参数传递会更好,但有时以您建议的方式执行操作是有意义的。实现此目的的一种方法是将信息保存在文件中。请参阅Matlab文档中的“加载”和“保存”。

答案 4 :(得分:0)

在尝试为我的工作创建MATLAB软件的运行时编译版本时,我遇到了提到的确切问题{​​{3}}。该软件广泛使用m文件在函数之间传递参数。另外,我们动态创建这些m文件,部署版本的MATLAB不能很好地使用。我们的解决方法是:

  • 将参数保存到不带.m扩展名的文件
  • 读取并评估文件的内容

因此,要遵循OP示例,在函数中我们将创建一个包含我们参数的文本文件INP。我们在 ctfroot 函数返回的目录中创建此文件。然后,在MAIN中,我们将使用以下内容来检索这些参数:

eval(char(textread(fullfile(ctfroot, INP), '%s', 'whitespace', '');

答案 5 :(得分:0)

如果数据脚本只是一个脚本,您可以直接从函数或其他脚本中调用它。不需要额外的命令。例如:

%mydata.m
a = 1;
b = 2;


%mymain.m
mydata
whos
mymain

>> mymain
  名称大小字节类属性

1x1 8双   b 1x1 8双

这也适用于脚本

之外的功能

%foo.m
功能foo MYDATA
卫生组织
>> foo

名称大小字节类属性

1x1 8双   b 1x1 8双

通常,最好使用MAT或其他数据文件来进行此类操作。