0

我是 Matlab 的新手,并且一直在使用谷歌。但现在我似乎已经碰壁了。

我有一个如下所示的文本文件:

Information is for illustration reasons only
Aggregated Results
Date;$/Val1;Total $;Exp. Val1;Act. Val1
01-Oct-2008; -5.20;   -1717;     330;     323
02-Oct-2008; -1.79;    -595;     333;     324
03-Oct-2008; -2.29;    -765;     334;     321
04-Oct-2008; -2.74;    -917;     335;     317
Total Period; -0.80;   -8612;   10748;   10276


Aggregated Results for location State PA
Date;$/Val1;Total $;Exp. Val1;Act. Val1
01-Oct-2008; -5.20;   -1717;     330;     323
02-Oct-2008; -1.79;    -595;     333;     324
03-Oct-2008; -2.29;    -765;     334;     321
Total Period; -0.80;   -8612;   10748;   10276


Results for account A1
Date;$/Val1;Total $;Exp. Val1;Act. Val1
01-Oct-2008; -7.59;    -372;      49;      51
Total Period; -0.84;   -1262;    1502;    1431


Results for account A2
Date;$/MWh;Total $;Exp. MWh;Act. MWh
01-Oct-2008; -8.00;    -392;      49;      51
02-Oct-2008;  0.96;      47;      49;      51
03-Oct-2008; -0.75;     -37;      50;      48
04-Oct-2008;  1.28;      53;      41;      40
Total Period; -0.36;    -534;    1502;    1431

我想以单元格/矩阵格式提取以下信息,以便以后可以使用它来选择性地执行诸如帐户 A1 和 A2 的平均值或 PA 和 A1 的平均值等操作。

PA  -0.8
A1  -0.84
A2  -0.036
4

2 回答 2

1

在处理杂乱的数据时,Matlab 并不是那么好。您可能需要先对其进行一些预处理。

但是,这是在 Matlab 中为有限数量的正常大小文件导入混合数字和非数字数据的简单通用方法。

第一步:将文件内容复制到excel中,保存为xls或xlsx 第二步:使用xlsread

[NUM,TXT,RAW]=xlsread('test.xlsx')

从那里解析应该是可管理的。

csvread希望他们会在未来或将来添加非数字支持dlmread

于 2013-08-22T15:30:06.823 回答
1

我会这样:

fid = fopen(filename,'r');
A = textscan(fid,'%s','delimiter','\r');
A = A{:};
str_i = 'Total Period';
ix = find(strncmp(A,str_i,length(str_i)));
res = arrayfun(@(i) str2num(A{ix(i)}(length(str_i)+2:end)),1:numel(ix),'UniformOutput',false);
res = cat(2,res{:});

这样,您将获得矩阵中字符串“总周期”之后的所有数值,以便您可以选择所需的值。

同样,您可以使用字符串PAA1进行操作A2

于 2013-08-22T15:17:13.750 回答