Я создаю случайные данные в 5 столбцах и сохраняю их как CSV-файл. Это прекрасно работает, мой CSV на самом деле содержит 1001 строку; мои данные с заголовком (я проверил это, открыв его в редакторе электронных таблиц). Однако, когда я снова прочитал его в MATLAB, используя , я получаю сообщение об ошибке, если не укажу разделитель, и когда я указываю разделитель data
содержит только 957 строк, поэтому заголовок и первые 42 строки отсутствуют. Что здесь происходит?csvread падает строки в MATLAB
код:
A = rand(1e3,5);
out = fopen('output.csv','w');
fprintf(out,['ColumnA', ',', 'ColumnB', ',', 'ColumnC', ',', 'ColumnD', ',', 'ColumnE','\n']);
fclose(out);
dlmwrite('output.csv', A, 'delimiter',',','-append');
data = csvread('output.csv',',');
Ошибка:
Error using dlmread (line 139) Mismatch between file and format string. Trouble reading number from file (row 1u, field 1u) ==> ColumnA,ColumnB,ColumnC,ColumnD,ColumnE\n
Error in csvread (line 48) m=dlmread(filename, ',', r, c);
я упускаю что-то глупое в письменной форме или чтение файла?
Я запускаю MATLAB R1012a на 64-битной машине Windows 7. (Хотя я надеюсь перейти на R2015b в следующем месяце)
Я получаю сообщение об ошибке, когда I * dont * использует разделитель, но вызываю 'data = csvread ('output.csv');' когда I * do * использует разделитель, он отлично работает, но оставляет строки. Наверное, мне просто нужно было использовать 1, ура. Я чувствую себя как скраб, что я не правильно прочитал документы. ~ – Adriaan
@Adriaan, действительно, вы это делаете, поэтому я предложил 1 :) Я думаю, если вы не укажете стартовую строку, то Matlab не будет попытайтесь определить, есть ли строка строки в файле и начинается с интерпретации этого как числовых данных, следовательно, ошибки. И не будьте слишком тяжелы на себе, встроенные функции анализа данных Matlab, как известно, являются изворотливыми. –