Я получаю сообщение об ошибке при запуске кода Matlab (прилагается), который постоянно проверяет и открывает два файла .txt за определенный промежуток времени (2 секунды), и в зависимости от результата сравнение значений между этими два файла, выбрали тот или иной и использовали его .... Эти два файла постоянно сохраняются и обновляются с помощью Java-скрипта с интервалом в 2 секунды. Все файлы расположены по тому же пути.Matlab, textscan error
Ошибки я получаю:. «Неверный идентификатор файла использовать Еореп для создания действительного идентификатора файла
Ошибка в KinectDEMelevation_with_filecomparison2 (строка 36) DEM1 = TextScan (fid2, formatSpec, 'HeaderLines', 6, 'Разделитель', '\ Ь'); "
код:
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
Как я могу это исправить?
Благодаря
не использовать файлы в качестве межпроцессного взаимодействия, особенно с учетом доступа (чтение/запись) не синхронизирована в вашем случае. –
Я знаю, что это проблема, но я не знаю, как пропустить эту проблему, единственный способ написать эти .txt-файлы - использовать этот Java-скрипт. Однако java-скрипт сохраняет файлы как .tmp, и только когда они полностью записаны, они переименовываются в .txt, чтобы сделать его доступным для скрипта Matlab, только если они полностью написаны. – Geonik