2015-07-11 2 views
2

Я постоянно получаю сообщение об ошибке при записи вывода в CSV-файле с использованием fprintf. Я действительно хочу написать свои результаты в CSV-файле. Я пробовал разные длины матрицы, и я получаю ту же ошибку даже с двумя столбцами. Какая ошибка здесь и как я могу устранить эту ошибку?MATLAB - Ошибка при записи вывода в CSV-файле с использованием fprintf

Пример кода:

colname = {'col1' 'col2' 'col3'}; 
fid = fopen('test.csv','w'); 
fprintf(fid, '%s, %s, %s\n', colname{1:}); 
for p=1:5 
    % <Some code> 
    fname = %reading image name from a directory 
    % <Some code> 
    val1 = %calculating value1 
    val2 = %calculating value2 
    datacol = {fname val1 val2}; 
    fprintf(fid, '%s, %f, %f\n', datacol{p+1:}); 
end 
fclose(fid); 

Ошибка:

??? Index exceeds matrix dimensions. at fprintf(fid, '%s, %f, %f\n', datacol{p+1:});

P.S .: Writing "DataCol = {имя_файла знач1 val2};" как "datacol = {fname, val1, val2};" принес такое же сообщение об ошибке.

ответ

2

Вы индексируете содержимое ячейки datacol. Если я не ошибаюсь DataCol выглядит н так:

{'some_string_for_the_name', 1, 2} 

Где 1 и 2 являются знач1 и val2. Во время цикла вы получаете доступ к datacol {p + 1}, который, очевидно, является datcol {4} для p = 3. Поскольку ваша ячейка имеет только три элемента, индексирование четвертого приведет к ошибке. То, что вы, вероятно, хотели бы сделать, это напечатать строки val1 и val2, нет? Изменение fprintf к

fprintf(fid, '%s, %f, %f\n', datacol{1}, datacol{2}, datacol{3}); 

должен решить вашу проблему.

+0

Да, вы правы. Благодарю. – Hasan

+0

не проблема, если это помогло просто убедиться, что вы принимаете ответ;) – lhcgeneva

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