我目前在使用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
当我只想存储一个值时,我不明白为什么我会遇到矩阵维度问题。请建议我。感谢您的帮助。
答案 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
并确保您了解数据在读入时的组织方式。您不需要任何数据这里有一个循环。