在matlab
我有一个应该接受文件名的函数。该文件中有一个结构,稍后应在函数中执行该文件,以便将结构加载到工作空间。
例如:
我的功能是hello(a)
,其中'a'是一个文件名,这个文件有一个结构。
在命令窗口中执行文件时,这个结构将被加载到工作区中。同样,我希望在调用函数时将结构加载到工作区中。
我试过eval(a)
了,但这没有将文件中的结构加载到工作区。
从文件名中我将如何获得结构名称,即使我知道文件中有一个结构,但这会动态变化。
那么我应该如何在函数中返回结构呢?
在matlab
我有一个应该接受文件名的函数。该文件中有一个结构,稍后应在函数中执行该文件,以便将结构加载到工作空间。
例如:
我的功能是hello(a)
,其中'a'是一个文件名,这个文件有一个结构。
在命令窗口中执行文件时,这个结构将被加载到工作区中。同样,我希望在调用函数时将结构加载到工作区中。
我试过eval(a)
了,但这没有将文件中的结构加载到工作区。
从文件名中我将如何获得结构名称,即使我知道文件中有一个结构,但这会动态变化。
那么我应该如何在函数中返回结构呢?
我不确定您是否希望将文件中的结构(或多个结构)自动复制到工作区,或者您是否想自己分配数据。
以下解决方案a
使用该函数自动将所有变量从文件复制到“基础”工作区assignin()
。该解决方案还假定您为它提供了一个 .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
尝试eval
:
function mystruct = readstruct(filename)
% ... read in text from file here ...
eval(text)
例如,假设您的文件包含 text 'mystruct.myval = 1'
,则在将文件内容读入 string 后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