Ошибка при вызове имени файла из csvread в matlab

#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