У меня была (слегка) похожая проблема, и я выбрал следующий подход (в моем случае это было потому, что я использовал xlswrite
, а затем перешел в систему без нее. pad_to_string
берет имя файла и ячейкумассив со смесью числовых и строковых данных.
Не уверен, насколько легко читать файлы в этом формате в Matlab, как я никогда не пробовал, но я думаю, csvread
должен справиться с этим.
function pad_and_write_to_csv(fname, data)
string_data = cellfun(@data_to_string,data,'UniformOutput',0);
size_data = cellfun(@length,data,'UniformOutput',0);
padded_data = cellfun(@(x) pad_string(x),string_data,'uniformoutput',0);
%From the char matrix, you can use the FPRINTF function to properly output strings to a text file, as shown below:
for i = 1:size(padded_data, 1)
lines{i} = horzcat(padded_data{i,:});
lines{i} = lines{i}(1:end-1); % strip trailing comma
end
fid = fopen(fname,'wt');
for i = 1:size(padded_data,1)
fprintf(fid,'%s\n',lines{i});
end
fclose(fid);
В файле pad_string.m
function [ out ] = pad_string( in )
% a = length(in);
% out = [char(32*ones(1,str_length-a)), in];
out = [in, ','];
В файле data_to_string.m
function [ out ] = data_to_string( in )
in_datatype = class(in);
switch in_datatype
case 'char'
out = ['''', in ''''];
case 'double'
out = num2str(in);
end