2013-08-16 2 views
0

У меня есть часть кода в файле mATLAB, который импортирует данные о потреблении электроэнергии в файле xlsx. Затем программа запросит у пользователя плату за сетку, выполнит необходимые вычисления и затем построит гистограмму, отображающую стоимость потребления за каждый месяц и год. Переменные, полученные в этой части кода, будут использоваться в других частях файла m.fileИмпорт из определенного диапазона данных xlsx в GUI MATLAB

Затем я создал многостраничный графический интерфейс для этого m.file с помощью GUIDE, но, будучи новым пользователем в MATLAB, я борясь с кодировками GUI. Особенно импортируя файл, так как я хочу, чтобы пользователь мог просматривать и выбирать диапазон импорта, а не весь файл. Еще одна вещь, с которой я борюсь, - сделать данные из этого графического интерфейса доступными для всех других страниц GUI.

В GUI есть 2 панели. 1 панель содержит 4 поля редактирования_текста для ввода пользователем платы сетки и кнопки «Ввод». Другая панель содержит оси, которые будут использоваться для отображения гистограммы, а также 13 статических текстов, которые будут отображать значение ежемесячной и годовой стоимости после завершения расчета. Я хочу, чтобы оси и 13 статических текстов отображали гистограмму и данные о расходах только после того, как пользователь заполнил поля редактирования необходимыми зарядами сетки, а затем нажав кнопку «Ввод».

Я видел несколько примеров импорта файлов excel в графическом интерфейсе, но те, которые я видел, полностью импортировали файл или слишком тяжелы для кого-то, у кого мало понимания кодирования графического интерфейса. Есть ли простое решение?

ответ

1

В Matlab функция xlsread имеет параметры, где можно указать лист и диапазон читать. http://www.mathworks.com/help/matlab/ref/xlsread.html

Для параметра диапазона можно указать диапазон так же, как в Excel

экс ,

xlsread('filename', 'A1:B10') 

читать в первых ячейках 10x2.

Однако я предлагаю вам использовать язык VBA Microsoft в Matlab для импорта данных в зависимости от того, насколько большой файл Excel. Я нахожу этот метод MUCH MORE эффективным для больших наборов данных.

Вот пример того, как использовать его, если вы заинтересованы:

excelObj = actxserver('Excel.Application'); 
fileObj = excelObj.Workbooks.Open(filename); 
sheetObj = fileObj.Worksheets.get('Item', sheetnumber); 

%Read in ranges the same way as xlsread! 
indata = sheetObj.Range('A1:B10').Value; 

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

Лучшее из удач!

+0

Благодарим вас за ввод. Я уже получил xlsread в моей функции m.file. То, что у меня возникает, заключается в том, чтобы заставить это работать в графическом интерфейсе, в котором пользователь сможет импортировать ряд данных, которые они указали из импортированного им файла xls. Похоже, что все работает совсем по-другому между файлом GUI m.file и обычным скриптом. –

+0

Как вы хотите, чтобы пользователь выбирал диапазон? Вы хотите, чтобы он был указан в определенной ячейке в файле, например «A1»? Или вы хотите, чтобы диапазон был выбран в графическом интерфейсе? –

+0

Я бы хотел, чтобы это было сделано в графическом интерфейсе. В графическом интерфейсе пользователь просматривает файл excel, а затем выбирает диапазон импорта. –

0

используйте текст редактирования в gui, в котором пользователь может указать диапазон данных, тогда вы можете использовать xlsread ('filename', cell_array) (где массив ячеек содержит свойство строки текста редактирования, указанного ранее) в обратном вызове другой кнопки, которую вы должны выполнить, чтобы выполнить после того, как пользователь вошел в диапазон. это можно сделать, если вы используете GUIDE или программно программируете. Разум мой английский, пожалуйста, его немного потрепанный

Смежные вопросы