Попытка прочитать большой файл данных и сохранить его в рабочей области, чтобы другие функции могли его использовать.

Я хочу, чтобы мой графический интерфейс мог читать файл, содержащий информацию о заголовке и несколько столбцов значений, и сохранять его, чтобы с данными можно было выполнять другие действия, такие как среднее, максимальное, среднеквадратичное значение и т. д.

Функция importdata отлично работает с файлами, которые я использую. У меня есть скрипт, который позволяет пользователю выбирать импортируемый файл, и все данные хранятся в рабочей области. Работает отлично. Однако, когда я запускаю этот скрипт в моей функции обратного вызова с графическим интерфейсом, рабочее пространство является внутренним, а не глобальным? и я не могу получить доступ к данным из файла в любом месте.

Есть ли способ прочитать данные, чтобы их можно было использовать в других обратных вызовах графического интерфейса?

Скрипт импорта данных

% Select the file
[fileName, pathName] = uigetfile('*.*','Pick Data File');
dataFile = [pathName, fileName];

%import data
allData = importdata(dataFile);

Функция обратного вызова графического интерфейса

function Open_File_Callback(hObject, eventdata, handles)

run ReadFile

person Razoll    schedule 20.01.2019    source источник


Ответы (1)


Каждая функция в графическом интерфейсе имеет свой собственный workspace, поэтому вам в основном следует делиться своими открытыми переменными с другими рабочими пространствами, для этого взгляните на assignin, сказав, что ваш код становится

function Open_File_Callback(hObject, eventdata, handles)
% Select the file
[fileName, pathName] = uigetfile('*.*','Pick Data File');
dataFile = [pathName, fileName];

%import data
allData = importdata(dataFile);

%assign to base workspace
assignin('base', 'tempData', allData);

кроме того, вы можете найти полезную информацию по теме в этой ссылке часто задаваемых вопросов

person hessam hedieh    schedule 20.01.2019