Чтение текстового файла с использованием fscanf из октавы / матрицы в массив ячеек
У меня есть один текстовый файл с разделителями-запятыми со строками и целыми числами, которые я пытаюсь импортировать в массив ячеек. Затем я хочу экспортировать его в несколько файлов на основе одного и того же Resonance Freq. и добавить текст в строку имени файла
Это образец текстового файла для импорта: (обратите внимание, что файл будет намного больше, чем этот)
Resonance Freq,number,Filename,time,fs,Split-3675,Session Num
277.912902832031250,1,p000001,00:00:01,44100,3675,0
123.912902832031250,2,p000002,00:00:02,44100,3675,2
277.912902832031250,3,p000003,00:00:03,44100,3675,0
277.912902832031250,4,p000001,00:00:01,44100,3675,1
343.912902832031250,5,p000002,00:00:02,44100,3675,0
277.912902832031250,6,p000003,00:00:03,44100,3675,4
И это экспортированные текстовые файлы, которые я хочу создать (текстовый файл1)
277.912902832031250,1,/tmp/p000001.wav,00:00:01,44100,3675,0
277.912902832031250,3,/tmp/p000003.wav,00:00:03,44100,3675,0
277.912902832031250,4,/tmp/p000001.wav,00:00:01,44100,3675,1
И это экспортированные текстовые файлы, которые я хочу создать (текстовый файл2)
123.912902832031250,2,/tmp/p000002.wav,00:00:02,44100,3675,2
И это экспортированные текстовые файлы, которые я хочу создать (текстовый файл3)
343.912902832031250,5,/tmp/p000002.wavadded ,00:00:02,44100,3675,0
У меня проблема с fscanf и использованием данных через запятую
fid = fopen('/tmp/freq_range_color_coded.txt');
m_s = fscanf(fid,'%f %f %s %s %f %f %f');
fclose(fid);
когда я получаю доступ к такой ячейке, как m_s(1,2), я получаю одну букву вместо поля. Как я могу получить это так, когда я набираю m_s(1,2), я получаю обратно весь пример поля
m_s(2,1) должен дать мне 277,912902832031250
Спасибо
PS Я использую октаву и тексты не совместимы с ней.
2 ответа
Попробуйте пропустить строку заголовка при импорте с textcan:
fid = fopen('/tmp/freq_range_color_coded.txt');
m_s = textscan(fid,'%f %f %s %s %f %f %f','delimiter', ',', 'HeaderLines', 1);
fclose(fid);
Похоже, что октавные текстовые файлы не полностью совместимы с Matlab. strread и textcan в Octave 3.4.0 не полностью совместимы с их реализациями в Matlab 2009b (и, возможно, также в более поздних версиях). Например, опция N=-1 (повторять формат чтения до конца строки) не реализована в Octave 3.4.0 . Использование значения N = положительное целое число (чтение формата N раз) работает так же, как в Matlab. Я должен использовать fscanf, но может ли он использовать разделители