2016-12-16 3 views
0

У меня есть матрица, где мне нужно экспортировать каждый столбец в отдельный файл .csv. Я знаю количество столбцов, и я могу достичь желаемого результата, если я специально выделил один столбец для экспорта. Я хотел бы сделать это следующим образом:MATLAB экспортирует несколько файлов .csv за один раз

dlmwrite('1.csv',data(:,1), 'precision', 9) 

Поэтому, если я хочу столбец 2 Я хотел бы изменить переменную к данным (:,2) и сохранить это как 2.csv.

Итак, я хочу, чтобы цикл, который будет делать все это автоматически. Я пробовал

for i=1:Number_of_Columns 
    dlmwrite('(i).csv',csv_data(:,(i)), 'precision', 9) 
end 

, который явно не сработает, но я не уверен, как это сделать.

Любая помощь или совет будет весьма признателен

ответ

2

Ваша проблема является имя файла. Если вы ставите i между кавычками, это будет восприниматься как символ вместо переменной. (В вашем случае ваше имя файла всегда будет «(я) .csv»)

Вы можете объединять строки с помощью [], и так как я это целое число, вы должны преобразовать его в строку, используя num2str()

Try:

for i=1:Number_of_Columns 
    dlmwrite([num2str(i) '.csv'], csv_data(:,i), 'precision', 9) 
end 

PD: Так как вы храните каждый столбец (не каждая строка) в файле, я не уверен, если вы хотите, файл, в котором каждый элемент находится в отдельной строке, или если вы хотите, чтобы столбец сохраняться в виде строки и разделяться запятыми.

Если вы хотите, последние, переставлять вашу колонку:

dlmwrite([num2str(i) '.csv'], csv_data(:,i).', 'precision', 9) 

Обратите внимание, что оператор транспонирования .' вместо комплексно-сопряженного ' (это обычное злоупотребление, так как результаты являются такими же, пока вы используйте только реальные цифры)

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