尝试使用textscan()函数从另一个文本文件保存变量时出现问题

时间:2014-03-19 09:56:26

标签: matlab

我目前在使用textscan()函数存储从其他文本文件中读取的值时遇到问题。

我正在尝试将NumPts用作计数器,以帮助我存储dat文件中变量数量的值。

我目前收到一条错误消息:      指数超过矩阵维度。      CorrectedWheelModelDataFromTxt中的错误(第15行)MyCellNumPts {1,1} = MyCellC {4,1};

以下是代码的摘录:

  MyCellXVal = cell(1,1000);
  MyCellYVal=  cell(1,1000);
  MyCellZVal=  cell(1,1000);
  MyCellNumPts = cell(1,1);
  NumPts=0;
  CountPts=1;

  MyCellC=cell(100,100);

  fileID = fopen('WheelReflectors.dat');
  MyCellC = textscan(fileID,'%d %d %d');
  fclose(fileID);

  MyCellNumPts{1,1}= MyCellC{4,1};
  NumPts = MyCellNumPts{1,1};
  while(CountPts<NumPts)

      MyCellXVal{1,CountPts} =C{CountPts,1};
      MyCellYVal{1,CountPts} =C{CountPts,2};
      MyCellZVal{1,CountPts} =C{CountPts,3};

      CountPts = CountPts +1;
  end

下面包含dat文件的数据:    130 40 70    270 40 70    200 40 0    3

当我只想存储一个值时,我不明白为什么我会遇到矩阵维度问题。请建议我。感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

使用dbstop if error检查发生了什么,但基本上是:

首先创建一个100 x 100的空单元格:

  `MyCellC=cell(100,100);`

但是当你致电textscan完全被覆盖时。

  fileID = fopen('WheelReflectors.dat');
  MyCellC = textscan(fileID,'%d %d %d');
  fclose(fileID);

MyCellC现在尺寸为1 x 3,因此您无法访问以下行中的MyCellC {4,1}:

  MyCellNumPts{1,1}= MyCellC{4,1};

(不清楚你想要哪个号码,也许myCellC{1}(4)?)

我的建议:从命令行运行fclose(fileID);,然后查看MyCellC并确保您了解数据在读入时的组织方式。您不需要任何数据这里有一个循环。