Quick way to write cell or cell array
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Akzeptierte Antwort
Azzi Abdelmalek
am 24 Aug. 2012
T={'A1' ,'A2' , 'A3';rand(2291,1) rand(1424,1) rand(1545,1)}
%i m not sur if that what you want
4 Kommentare
Azzi Abdelmalek
am 28 Aug. 2012
Bearbeitet: Azzi Abdelmalek
am 28 Aug. 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
Weitere Antworten (1)
Walter Roberson
am 25 Aug. 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 Kommentare
Walter Roberson
am 25 Aug. 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.
Siehe auch
Kategorien
Mehr zu Search Path finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!