阅读文本文件并通过Matlab绘制它

时间:2014-04-28 10:50:38

标签: matlab file text

我有一个包含如下数据的文本文件:

 E11E25E0E0E0E16E20E4E0E7E ........... etc.

我想阅读这个文件并绘制其数据。

我该怎么做?

提示:

我想我必须在以下步骤中执行以下操作:

  1. 使用(fopendlmreadfileread)阅读文本文件数据,可将此数据命名为(R)。

  2. 从数据(E)中删除字符{R),可以将此数据重命名为(RR)。

  3. 然后,计算出的数据(RR)为[ 11 25 0 0 0 16 20 4 0 7 . . . . . ]

  4. 然后,确定X轴如下:t = 0 : length ( RR )-1;

  5. 最后,将此数据绘制如下:plot(t,RR)

2 个答案:

答案 0 :(得分:2)

您需要做的就是正确地对字符串进行标记(一旦从文件中读取它)。

str_成为您的字符串(str_ = fileread(filename)

 >> str_ = 'E11E25E0E0E0E16E20E4E0E7E '

然后

 nums = strread(str_,'E%d')    % # proper token structure has to be prescribed


 nums =

    11
    25
     0                                                                                                                                                                                          
     0                                                                                                                                                                                          
     0                                                                                                                                                                                          
    16                                                                                                                                                                                          
    20
     4
     0
     7

可以通过plot完成绘图,无需明确定义时间轴。

  plot(nums)

enter image description here

答案 1 :(得分:0)

以下是Acorbe答案的一个版本,如果您在单元格字符串中有多个字符串,它也适用:

>> strs = {
       'E11E25E0E0E0E16E20E4E0E7E '
       'E11E28E0E0E0E16E20E4E0E7E ' };
>> 
>> %// greater flexibility:
>>
>> nrs = cellfun(@str2double, regexp(strs,'\d*','match'), 'UniformOutput',false);
>> nrs = cat(1, nrs{:})
ans =
    11    25     0     0     0    16    20     4     0     7
    11    28     0     0     0    16    20     4     0     7

>> %// greater speed: 
>> 
>> C = cellfun(@(x)strread(x, 'E%d'), strs, 'UniformOutput',false);
>> C = [C{:}]
ans =
    11    11
    25    28
     0     0
     0     0
     0     0
    16    16
    20    20
     4     4
     0     0
     7     7