Quick way to write cell or cell array
16 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hi -
I'm trying to write a cell array containing something like (to a file):
'A1' 'A2' 'A3'
[2291x1 double] [1424x1 double] [1545x1 double]
Is there any quick and easy way to do so?
I appreciate any suggestion.
Thank you
Pearl
0 comentarios
Respuesta aceptada
Azzi Abdelmalek
el 24 de Ag. de 2012
T={'A1' ,'A2' , 'A3';rand(2291,1) rand(1424,1) rand(1545,1)}
%i m not sur if that what you want
4 comentarios
Azzi Abdelmalek
el 28 de Ag. de 2012
Editada: Azzi Abdelmalek
el 28 de Ag. de 2012
%for mor columns (676) you can use this:
T={'A1' ,'A2' , 'A3';rand(2291,1) rand(1424,1) rand(1545,1)}
s='ABCDEFGHIJKLMNOPQRSTUVWXYZ';c=s';
for k=1:length(s)
for l=1:length(s)
c=char(c,[s(k) s(l)])
end
end
for k=1:size(T,2)
n=length(T{2,k})+1;ch1=strtrim(c(k,:))
xlswrite('ans_xls126.xlsx',T(1,k),sprintf([ ch1 '%d:' ch1 '%d'],1,1))
xlswrite('ans_xls126.xlsx',T{2,k},sprintf([ ch1 '%d:' ch1 '%d'],2,n))
end
Más respuestas (1)
Walter Roberson
el 25 de Ag. de 2012
MATLAB is a bit weak on routines to write cell arrays all at one time. But you can use something like this:
headers = YourCell(1,:);
header_format = '%.15s %.15s %.15s\n';
values = cell2mat(YourCell(2,:));
numcols = size(values,2);
value_format = [ repmat('%.15g ', 1, numcols-1), '%.15g\n');
fout = fopen('YourFile.txt', 'wt');
fprintf(fout, header_format, headers{:});
fprintf(fout, value_format, values.'); %transpose is important!
fclose(fout);
2 comentarios
Walter Roberson
el 25 de Ag. de 2012
NaN will be written to the file if you use the structure such as I showed.
In order to write in "columns", you need to define how you can tell columns apart, such as how you can tell whether there are one blank columns or two blank columns instead. When that is defined we can help write the code.
Ver también
Categorías
Más información sobre Search Path en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!