Не удалось загрузить файлы в Matlab с ошибкой, используя fgets (неверный идентификатор файла) - PullRequest
0 голосов
/ 21 сентября 2019

Я хочу проанализировать текстовый файл с моим m-файлом.В текстовом файле аннотации изображений DICOM хранятся в той же папке.Однако я сталкиваюсь с ошибкой fgets и не могу двигаться дальше.

Поскольку мой друг мог запустить этот m-файл на своем ноутбуке, я не уверен, связана ли моя проблема с онлайновым Matlab, а не с версией для ПК, которую я использую.Заранее благодарим за любые советы!

Содержимое моего m-файла:

function ROIs = loadROIfiles(ROIfileName)
% Loads all the ROIs stored in the *.txt file from the specified location.
% The ROIs are returned as a structure array as:
% ROIs(i).spacing_x (double)
% ROIs(i).spacing_y (double)
% ROIs(i).label (string)
% ROIs(i).slice_number (double)
% ROIs(i).xValues (vector of double)
% ROIs(i).yValues (vector of double)
%
% USAGE :
% ROIs = loadROIfiles(ROIfileName)

fid = fopen(ROIfileName, 'r');
i=1;
while 1
    tline = fgetl(fid);
    if ~ischar(tline), break, end

    if (isempty(findstr(tline, 'SpacingX:')) == false)
        spacing_x = str2double(strrep(tline, 'SpacingX: ', ''));
    elseif (isempty(findstr(tline, 'SpacingY:')) == false)
        spacing_y = str2double(strrep(tline, 'SpacingY: ', ''));
    elseif (isempty(findstr(tline, 'label:')) == false)
        label = strrep(tline, 'label: ', '');
    elseif (isempty(findstr(tline, 'slice_number:')) == false)
        slice_number = str2double(strrep(tline, 'slice_number: ', ''));
    elseif (isempty(findstr(tline, 'nb_points_on_contour:')) == false)
        nb_points_on_contour = str2double(strrep(tline, 'nb_points_on_contour: ', ''));
        xValues = [];
        yValues = [];
        for j=1:nb_points_on_contour
            tline = fgetl(fid);
            [xValStr, yValStr] = strtok(tline, ' ');
            xVal = str2double(xValStr);
            yVal = str2double(yValStr);
            xValues = [xValues xVal];
            yValues = [yValues yVal];
        end
        % store the ROI into the struct array "ROIs"
        ROIs(i).spacing_x = spacing_x;
        ROIs(i).spacing_y = spacing_y;
        ROIs(i).label = label;
        ROIs(i).slice_number = slice_number;
        ROIs(i).xValues = xValues;
        ROIs(i).yValues = yValues;

        i=i+1;
    end
end

fclose(fid);

Код в окне команд:

ROIs = loadROIfiles('CT-INSPIRIUM-6817.txt')

Ошибки:

Error using fgets
Invalid file identifier. Use fopen to generate a valid file identifier.

Error in fgetl (line 32)
[tline,lt] = fgets(fid);

Error in loadROIfiles (line 38)
    tline = fgetl(fid);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...