我必须在结构中加载一些数据。
我在一个函数中做。
假设我的结构被称为
loaddata
,数据在
loaddata.corrected_data
如何在函数中访问它?
function loaddata_struct(path,namestruct)
loaddata = load(path);
data = loaddata.corrected_data; % this should change depending on the argument of the function (namestruct in this case)
end
如何传递结构名称?在这种情况下corre_data ...
答案 0 :(得分:2)
您可以使用动态字段名称,如下所示:
fieldOfInterest = 'corrected_data';
data = loaddata.(fieldOfInterest);
如果您从文件加载,您也可以直接访问数据
data = load('theDataFile.mat','-mat',fieldOfInterest)
答案 1 :(得分:1)
使用 getfield
,如果您需要处理1 x N
大小的结构数组 -
function loaddata_struct(path,fname)
loaddata = load(path);
for k1 = 1:numel(loaddata)
data{k1} = getfield(loaddata(k1),fname);
end
return;
因此,您可以像这样使用它 - loaddata_struct(path,'corrected_data')
答案 2 :(得分:1)
以下代码将返回结构的字段,其名称传递给loaddata_struct函数:
function data = loaddata_struct(path,namestruct)
loaddata = load(path);
data = loaddata.(namestruct);
end
答案 3 :(得分:-1)
以文字形式使用isfield
和eval
。 Isfield
将检查字符串是否为结构的字段,如果是,则使用eval评估loaddata.fieldname
。使用isfield确保永远不会出现错误,并且您可以在else中执行操作,例如查找与插入的数据名称最相似的数据。
function loaddata_struct(path,fieldname)
loaddata = load(path);
if isfield(loaddata ,fieldname)
data = eval(strcat('loaddata.',fieldname));
else
error('Heeey mate, thats not a field')
end
end