相关代码:
function result = loadStructFromFile(fileName, environmentName)
result = load(fileName, environmentName);
bigMatrix = loadStructFromFile('values.mat','bigMatrix');
但是当我查看工作区时,它会将'bigMatrix'显示为1x1结构。然而,当我点击结构时,它是实际数据(在这种情况下是一个998x294矩阵)。
答案 0 :(得分:9)
正如LOAD的文档所示,如果使用输出参数调用它,结果将在结构中返回。如果不使用输出参数调用它,则会在本地工作空间中创建变量,并使用保存它们的名称。
对于函数loadStructFromFile
,如果保存的变量名称可以有不同的名称(我假设为environmentName
),则可以通过编写
function result = loadStructFromFile(fileName, environmentName)
tmp = load(fileName, environmentName);
result = tmp.(environmentName);
答案 1 :(得分:3)
即使您只指定一个变量名称,LOAD仍会将其输出到结构中。在您的情况下,您有一个选项是使用函数STRUCT2CELL将LOAD的输出转换为单元格数组,然后使用variable output argument list返回此结果:
function varargout = loadStructFromFile(fileName,environmentName)
varargout = struct2cell(load(fileName,environmentName));
end
使用VARARGOUT还有一个好处,即如果environmentName
匹配.MAT文件中的多个变量,您可以从函数中返回所有变量。例如,如果您的.MAT文件有三个变量N1
,N2
和N3
,而environmentName
是N*
,您可以通过调用全部获取它们您的多功能输出功能:
[N1,N2,N3] = loadStructFromFile('values.mat','N*');
答案 2 :(得分:1)
这是一个旧帖子,但如果它对某些人有用:
加载结构时,如果要直接分配输出结构中的子字段,可以使用structfun
和以下命令:
bigMatrixOUT = structfun(@(x) x,load('values.mat','bigMatrix'))
bigMatrixOUT
将直接包含bigMatrix
的字段,而不包含bigMatrixOUT.bigMatrix
答案 3 :(得分:0)
您还可以尝试使用点表示法访问已知字段,以使所有操作都在一行代码中完成。
df = pd.read_excel(excel_link, sheet_name, dtype=str)
或
bigMatrix = load('values.mat','bigMatrix').bigMatrix;