текстовый файл с разделителями табуляции от matlab - PullRequest
3 голосов
/ 24 января 2012

Следующий код генерирует набор данных, аналогичный тому, с которым я сейчас работаю:

clear all
    a = rand(131400,12);
    DateTime=datestr(datenum('2011-01-01 00:01','yyyy-mm-dd HH:MM'):4/(60*24):...
        datenum('2011-12-31 23:57','yyyy-mm-dd HH:MM'),...
        'yyyy-mm-dd HH:MM');
    DateTime=cellstr(DateTime);
    header={'DateTime','temp1','temp2','temp4','temp7','temp10',...
        'temp13','temp16','temp19','temp22','temp25','temp30','temp35'};

Я пытаюсь преобразовать выходные данные в одну переменную (называемую 'Data'), т.е. иметь заголовок в качествепервая строка (1, :), DateTime, начинающаяся со строки 2 (2: конец, 1) и проходящая через каждую строку и, наконец, имеющая «a» в качестве данных (2: конец, 2: конец), если это имеет смысл,Итак, DateTime и header используются как заголовки для строк и столбцов соответственно.После этого мне нужно сохранить это в текстовом файле с разделителями табуляции.

Надеюсь, я четко изложил то, что я пытаюсь сделать.

1 Ответ

3 голосов
/ 24 января 2012

Простой способ, но, возможно, не самый быстрый:

Data = [header; DateTime, num2cell(a)];
filename = 'test.txt';
dlmwrite(filename,1); %# no create text file, not Excel
xlswrite(filename,Data);

ОБНОВЛЕНИЕ: Похоже, что xlswrite фактически изменяет формат значений DateTime дажеесли он пишет в текстовый файл.Если формат важен, лучше и быстрее:

filename = 'test.txt';
out = [DateTime, num2cell(a)];
out = out'; %# our cell array will be printed by columns, so we have to transpose

fid = fopen(filename,'wt');
%# printing header
fprintf(fid,'%s\t',header{1:end-1});
fprintf(fid,'%s\n',header{end});
%# printing the data
fprintf(fid,['%s\t', repmat('%f\t',1,size(a,2)-1) '%f\n'], out{:});
fclose(fid);
...