#matlab #csv #matlab-guide
#matlab #csv #matlab-руководство
Вопрос:
Я использую matlab для анализа и обработки дерева decision, чтобы дать ответ True / False.
Я хотел добавить больше функциональности, чтобы позволить пользователю либо считывать данные из файла csv, либо вводить данные вручную. В настоящее время я получаю сообщение об ошибке ниже, я пытался использовать этот метод csv для предыдущих данных, и он работает нормально. (Я знаю, что пользовательский ввод на данный момент ничего не делает, пока не добавлена функциональность)
Ошибка в csvread (строка 47) m=dlmread(filename, ‘,’, r, c);
Ошибка в second_draft (строка 28) M = csvread(filename, 1)
Я попытался использовать dlmread, но также получил ошибку, некоторые числа в csv имеют плавающую точку, а некоторые — целые числа, я не уверен, связано ли это с ошибкой.
данные, которые я пытаюсь прочитать, выглядят следующим образом
prompt = input('Do you want to manually input values or select file? :','s'); %user prompt to select manual data entry or to read csv file
s2 = {'file','folder'; %array of strings that will be compared against user input
'f','choose'};
tf = strcmp(prompt,s2); % string compare of user input 'prompt' against array 's2'
if any(tf(:)) %tf(:) returns a column vector of all elements in tf, and any() checks if there are any values greater than 1.
[filename pathname] = uigetfile({'*.csv'}, 'File selector')
else
prompt = {'Enter matrix size:','Enter colormap name:',};
dlg_title = 'Input';
num_lines = 1;
defaultans = {'20','hsv'};
answer = inputdlg(prompt,dlg_title,num_lines,defaultans);
end
for x = 1:267
M = csvread(filename, 1);
val1=M(x,1);
val3=M(x,3);
val7=M(x,7);
val8=M(x,8);
val9=M(x,9);
val10=M(x,10);
val11=M(x,11);
val12=M(x,12);
val13=M(x,13);
outcome = [];
if val3 <= 3
if val13 <= 3
if val10 <=1.6
outcome = 'False';
else
Очевидно, что есть больше кода для запуска по всему дереву решений, я протестировал его автономно, и он работает нормально.
Любая помощь будет с благодарностью принята Я перепробовал все, что знаю, и не могу ее решить!
Комментарии:
1. посмотрите на свои скобки:
M = csvread(filename, 1)
. Это то, что есть у вас в вашем досье?2. Да, у jsut есть; в конце, чтобы подавить его в окне командной строки.
3. Нет, в вашем коде, который вы ввели:
M = csvread(filename, 1]
взгляните на конечную скобку.4. извиняюсь, это скобка a) в моем скрипте
5. В документации
csvread
иdlmread
четко указано, что они могут использоваться только для числовых данных. Вы передаете смешанные данные, потомуResult
что это строка. Использоватьtextscan