在matlab中传递文件名作为参数

时间:2013-07-18 09:57:43

标签: matlab

matlab我有一个应该采用文件名的功能。 这个文件中有一个结构,以后这个文件应该在函数中执行,这样结构就会被加载到工作区。

例如:

我的功能是hello(a),其中'a'是文件名,此文件有结构。

在命令窗口中执行文件时,此结构将加载到工作区中。 我希望在调用函数时将结构加载到工作区中。

我尝试了eval(a),但这并没有将文件中的结构加载到工作区。

从文件名中我将如何获取结构名称,即使我知道文件中有结构,但这将会动态变化。

那么我应该如何在函数中返回结构?

2 个答案:

答案 0 :(得分:1)

我不确定您是否希望将文件中的结构(或结构)自动复制到工作区,或者您是否想自己分配数据。

以下解决方案使用a函数自动将文件assignin()中的所有变量复制到“base”-workspace。该解决方案还假定您为.mat文件提供了一个文件。

function hello(a)
   all_structs = load('-mat', a);
   var_names = fieldnames(all_structs);
   for k = 1:length(var_names)
      assignin('base', var_names{k}, all_structs.(var_names{k}));
   end
end

答案 1 :(得分:0)

尝试eval

function mystruct = readstruct(filename)
% ... read in text from file here ...
eval(text)

例如,假设您的文件包含文本'mystruct.myval = 1',然后在将文件内容读入字符串text后,eval(text)返回

mystruct = 

    myval: 1

要将结构加载到工作区,该函数应返回结构。

如果文件包含任意数据(可能但不一定是ascii格式),那么您可以在读取文件后将其分配给结构:

function mystruct = readstruct(filename)
% ... read in text from file here ...
% ... perform conversion of data type ...
mystruct.value = values