无法使用textread

时间:2016-11-17 09:29:19

标签: matlab file

我正在尝试使用 textread 函数在Matlab中读取 .samp 文件的数据。我想将文件的每个放在一个数组中。这是.samp文件:

@CATEGORY:GENERAL
@IMAGE:2012-04-26-Muenchen-Tunnel_4K0G0010.JPG
# format: id type center.x center.y size.width size.height angle
0 30 1319 2338 35 11 56.451578
1 30 1337 2350 42 14 57.817368
2 30 224 3556 61 20 136.967797

当我尝试运行此命令时:

[id, type, x, y, width, height, angle] = textread('data', '%d%d%d%d%d%d%f', 'headerlines', 3);

它不起作用并发出错误:

  

使用dataread时出错

     

无法从文件中读取整数(第1行,字段> 1)==> %CB =   DATA(OBJ,'get_callbacks')返回

     

textread(第174行)错误

     

[varargout {1:nlhs}] = DATAREAD( '文件',varargin {:}); %#确定

如何键入命令才能正常运行?然后我应该怎么做才能将每​​一行(行)放在一个单独的数组中?

1 个答案:

答案 0 :(得分:0)

尝试将完整文件路径指定为第一个参数。对我而言,将data放入C:\Users\MyUsername\然后调用

 [id, type, x, y, width, height, angle] = textread('C:\Users\MyUsername\data',...
                                                   '%d%d%d%d%d%d%f',...
                                                   'headerlines', 3);

足以让它发挥作用。但是,Matlab documentation建议将textread切换为textscan,因此您应该考虑这一点。

关于你问题的第二部分:你真的希望你的档案中只有三行吗?如果没有,您可以将所有列向量放入矩阵并通过切片访问水平向量:

M = [id type x y width height angle];
M(1,:) %  first line of your file

但是,如果您确实只有三行,则可以使用

vec1 = [id(1) type(1) x(1) y(1) width(1) height(1) angle(1)];
vec2 = [id(2) type(2) x(2) y(2) width(2) height(2) angle(2)];
vec3 = [id(3) type(3) x(3) y(3) width(3) height(3) angle(3)];