2016-10-24 2 views
-2

У меня есть массив ячеек в Matlab (1x149): каждая ячейка содержит данные из отдельного файла .txt. Я использовал следующий код для загрузки файлов .txtЗаписать несколько файлов .csv

d = dir('*.txt'); 
nfiles = length(d); 
data = cell(1, nfiles); 
for k = 1:nfiles 
data{k} = importdata(d(k).name); 
end 

Столбцы 1 по 5

[39676x182 double] [39676x182 double] [39676x182 double] [39676x182 double] [39676x182 double] 

Я хочу писать отдельные файлы .csv для каждой ячейки.

Я пробовал использовать csvwrite, но он дает большой файл, с которым я не могу работать. Я пытаюсь написать цикл for для записи каждой ячейки в отдельный файл CSV.

+0

Вы отметили это как 'R' и' matlab', поэтому вам действительно нужно рассказать нам, какой язык вы используете. Поскольку вы назвали его массивом ячеек, я предполагаю, что это 'matlab', но вам нужно включить это в свой вопрос и удалить тег' r', если это не имеет значения. Также включите то, что вы уже пробовали (но не работали), чтобы выполнить это. Подсказка: начните с 'csvwrite'. – Barker

+0

Что произошло, когда вы пытались поместить 'csvwrite' в цикл? – excaza

+0

Я не знаю, является ли это правильным, но это то, что у меня есть: 'for i = 1:10 csv (i) = csvwrite ('test% d.csv', data (i: i)) end' ошибка, которую я получаю, слишком много выходных аргументов –

ответ

0

Я только что попробовал это и сгенерировал некоторые случайные числа, которые соответствуют вашей проблеме.

test = mat2cell(randi(50,39676*5,182),[39676,39676,39676,39676,39676],182); 
test = test'; 

дает мне:

test = 

    [39676x182 double] [39676x182 double] [39676x182 double] [39676x182 double] [39676x182 double] 

Перебор это с:

for i = 1:5 
    csvwrite(strcat('file',num2str(i),'.csv'),test{1,i}) 
end 

Результаты в пяти * .csv файлов (file1.csv, file2.csv, ...). Использование strcat для получения имени файла может быть решено лучше, но я не знаю, как это сделать.

+0

это работает. Спасибо –

+0

было бы приятно принять этот ответ. Благодарю. – RhyminSimon

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