2010-04-25 5 views
0

Я создал графический интерфейс и использовал uiimport для импорта набора данных в рабочее пространство matlab, я хотел бы передать эти импортированные данные в другую функцию в matlab ... Как передать этот импортированный набор данных в другой функция .... Я пробовал делать diz ... но он не мог выбрать diz .... он не выбирает данные на рабочем месте matlab .... любые идеи?Передача данных из рабочего пространства в функцию

[file_input, pathname] = uigetfile(... 
{'*.txt', 'Text (*.txt)'; ... 
'*.xls', 'Excel (*.xls)'; ... 
'*.*', 'All Files (*.*)'}, ... 
'Select files'); 

uiimport(file_input); 
M = dlmread(file_input); 
X = freed(M); 

ответ

0

В вашем скрипте есть три способа прочитать файл. Выберите один из них в зависимости от вашего формата файла. Но сначала я хотел бы объединить имя файла с путем:

file_input = fullfile(pathname,file_input); 

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

С DLMREAD вы можете читать только цифровые данные из файла. Вы также можете пропустить некоторое количество строк или столбцов с помощью

M = dlmread(file_input,'\t',1,1); 

Пропуск первой строки и одной колонки слева. Или вы можете определить диапазон в виде стиля Excel. Дополнительную информацию см. В документации DLMREAD.

Имя файла, которое вы передаете DLMREAD, должно быть строкой. Не пропускайте дескриптор файла или любые данные. Вы получите «Имя файла должно быть строкой», если это не строка. Легко.

FREAD считывает данные из двоичного файла. См. Документацию, если вам действительно нужно это сделать.

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

1

Я думаю, что вам нужно присвоить результат этого заявления:

uiimport(file_input); 

переменной, как этот

dataset = uiimport(file_input); 

, а затем передать, что к следующей функции:

M = dlmread(dataset); 

Это очень ба sic feature of Matlab, которая предлагает мне, что вам будет полезно прочитать некоторые из онлайновых справок и часть документации для Matlab. Когда вы это сделаете, вы, вероятно, найдете более быстрые и быстрые способы сделать это.

EDIT: Ну, @Tim, если все остальное не работает RTFM. Так я и сделал, и мой предыдущий ответ неверен. Что нужно передать в dlmread - это имя файла для чтения. Таким образом, вы либо используете uiimport, либо dlmread, чтобы прочитать файл, но не оба. Какой из них вы используете, зависит от того, что вы пытаетесь сделать, и от формата входного файла. Итак, пойдите RTFM, и я сделаю то же самое. Если у вас по-прежнему возникают проблемы, обновите свой вопрос и укажите информацию о содержимом файла.

+1

Документация Matlab очень хорошо написана и должна действительно помочь прояснить ситуацию. Если вы не хотите читать, вы также можете посмотреть один из многих видеоуроков, например, этот: http://www.mathworks.com/support/2010a/matlab/7.10/demos/WritingAMATLABProgram.html – Jonas

+0

.. ..и пытались, что уже ... получили некоторые ошибки !!! – Tim

+0

??? Ошибка при использовании ==> dlmread при 55 Имя файла должно быть строкой. Datz что я получил, я пытался использовать dlmread – Tim

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