如何在MATLAB中创建数组数据结构?

时间:2014-11-18 19:06:52

标签: matlab

我基本上有一个大型数据集文件,我想编写一个为其创建数据结构的MATLAB脚本。我试着在MATLAB中阅读有关使用结构化数组的内容,但我还没有找到如何解决这个问题的方法。我在MATLAB上编写脚本方面并不是很有经验。

已修改:我的数据集是一个很大的项目列表,例如,每个项目的10个不同特征。例如,假设出售的房屋和特征的100,000个列表可以是pricecountystatedate,等等。此文件位于{{1 }},txt.或您喜欢的任何格式。

我想写一个MATLAB脚本,用以下格式创建它的数据结构:

xls.

对正确方向的任何建议或教导如何做到这一点的例子将不胜感激。

1 个答案:

答案 0 :(得分:1)

这似乎是一个非常合理的问题,可以轻松解决。

文件的格式确实使这个问题变得容易或困难。我自己真的不喜欢.xls这类工作的文件,但我知道,你得到了你得到的东西。我们假设它位于制表符分隔的文本文件中,如:

Price   County  State   Date
100000  Sherlock    London  2001-10-01
134000  Holmes  Dartmoor    2011-12-30
123456  Watson  Boston  2003-04-15

如果我只是将整个事情读入解析字段名称行并使用动态结构命名来构建结构数组。

fid = fopen('data.txt','r');

tline = fgetl(fid);
flds = regexp(tline,'\s*','split');
% initialize the first prototype struct
data = struct();
for ii=1:length(flds)
  data.(flds{ii}) = [];
end
ii = 1;
% get the first line of data
tline = fgetl(fid);
while ischar(tline)
  % parse the data
  rowData = regexp(tline,'\s*','split');
  % we're assuming no missing data, etc
  % populate the structure
  for jj=1:length(flds)
    data(ii).(flds{jj}) = rowData{jj};
  end
  % since we don't know how many lines we have
  % we could figure that out, but we won't now
  % we'll just use the size extending feature of
  % matlab arrays, even though it's slow, just
  % to show how we would do it
  tline = fgetl(fid);
  ii = ii + 1;
end
fclose(fid)

希望这能让你开始!