Matlab,文本扫描错误

时间:2015-05-30 12:43:53

标签: matlab textscan

运行Matlab代码(附件)时出错,连续检查并以给定的时间间隔(2秒)打开两个.txt文件,并根据结果对这两个文件进行值比较,选择一个或另一个并使用它.... 这两个文件由Java脚本以2秒的相同时间间隔不断保存和更新。 所有文件都位于同一路径中。

我得到的错误是:"文件标识符无效。使用fopen生成有效的文件标识符

KinectDEMelevation_with_filecomparison2中的错误(第36行)     DEM1 =     textscan(FID2,formatSpec,' HeaderLines',6,'分隔符'' \ B&#39); "

代码是:

DEM = GRIDobj('kinectDEM0.txt');
clims = [-30 140];
imagesc(DEM,clims);
colormap(jet);               
hold on

while(1)
    tic
%     clear all
%     clf
%     load('MyColormaps','mycmap');

    %% Get kinectDEM0 data

    % Open 'kinectDEM0.txt'
    fid1 = fopen('kinectDEM0.txt', 'r+');
    % Read data in from the .txt file
    formatSpec = '%n';
    DEM0 = textscan(fid1,formatSpec,'HeaderLines',6,'Delimiter','\b');
    % Extract data from DEM0
    DEM0Data = DEM0{1,1}(200:100:287800,1);
    % Close 'kinectDEM0.txt'
    fclose(fid1);

    %% Get kinectDEM1 data

    % Open 'kinectDEM1.txt'
    fid2 = fopen('kinectDEM1.txt', 'r+');
    % Read data in from the .txt file
    formatSpec = '%n';
    DEM1 = textscan(fid2,formatSpec,'HeaderLines',6,'Delimiter','\b');
    % Extract data from DEM1
    DEM1Data = DEM1{1,1}(200:100:287800,1);
    % Close 'kinectDEM1.txt'
    fclose(fid2);

    %% Compare data, a logical array return 1 for true (points that has been changed), 0 for false


    test = eq(DEM0Data,DEM1Data);
    num = sum(test);                    % numbers of point in the scene that has been changed
    threshold = 2900;                   % after this threshold update the image

    if num > threshold
        DEM = GRIDobj('kinectDEM1.txt');
        clf
        clims = [-30 140];
        imagesc(DEM,clims);
        colormap(jet);                  
        hold on

    end

    T = toc;
    pause(2 - T);

end

我该如何解决?

由于

1 个答案:

答案 0 :(得分:0)

您应该添加一些错误检查以确保文件:

  • 存在
  • 已成功开通

首先,您可以使用exist

r = exist('kinectDEM0.txt','file');
% will return 2 if file exists

对于第二个,您需要检查fid是否有效。如果fopen无法打开文件,则为-1。您还可以使用fopenerrmsg的第二个输出进行其他检查;如果文件成功打开,errmsg应为空字符串,否则将返回系统错误消息,例如“No such file or directory”。

一个简单的例子:

fid = -1
while fid == -1
    fid = fopen('myfile.txt'); % attempt to open until success
end