从matlab中的结构中读取数据

时间:2014-11-04 10:46:25

标签: matlab structure

我必须在结构中加载一些数据。

我在一个函数中做。

假设我的结构被称为

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 ...

4 个答案:

答案 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)

以文字形式使用isfieldevalIsfield将检查字符串是否为结构的字段,如果是,则使用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