#matlab
#matlab
Вопрос:
Я пытался прочитать CSV-файл с помощью ezread https://de.mathworks.com/matlabcentral/fileexchange/11026-ezread и я получаю следующую проблему:
Ошибка при использовании textscan Второй ввод должен быть векторным символом формата, содержащим хотя бы один > спецификатор или поле литерала.
Ошибка в ezread (строка 66) data = textscan(fid,format_str, ‘разделитель’,file_delim, ‘заголовки’, 1);
Я вызываю функцию следующим образом:
tmpName = '/path/file.csv';
structRead = ezread(tmpName, 'r');
Я проверил, правильно ли указано tmpName с помощью isfile(), так что это правильный путь.
Первые две строки моего файла имеют следующий формат:
a,b,c,d
1,2,e,f
Вы знаете, в чем может быть проблема?
Комментарии:
1. Почему вы используете отправку file exchange для такой простой задачи? Вы пробовали использовать readtable?
2.
readtable
в этом контексте это не так хорошо. Это вызывает заголовок таблицы.
Ответ №1:
Вместо этого ezread
вам следует использовать importdata
. Однако он не распознает разделение запятой ,
. Итак, вам нужно добавить дополнительную строку:
tmpName = importdata('/path/file.csv');
structRead = split(a, ',')
Результатом является:
2×4 cell array
{'a'} {'b'} {'c'} {'d'}
{'1'} {'2'} {'e'} {'f'}
Комментарии:
1. что ж, ezread на самом деле очень хорошее решение для решения проблемы, без необходимости выполнять extra .split или что-то подобное.
2. Как вы видите, EZread совсем не прост. Такого рода самодельные скрипты очень непостоянны.