Export to a fixed width text file
조회 수: 13 (최근 30일)
이전 댓글 표시
Hi. I have a fairly simple problem, but haven't figured out how to solve it.
I would like to convert a cell array to a text file with fixed width columns. For example, the first row might contain a mixture of strings and numbers:
's09' 1111222003 321 'P' 'ehz'
and I want to have five spaces between the first and second columns, seven spaces between the second and third, and 3 spaces between the third and fourth. The reason for this is because I am converting the data into a very finicky format.
Thanks for any help in advance.
댓글 수: 0
채택된 답변
Jonathan Sullivan
2013년 5월 28일
편집: Jonathan Sullivan
2013년 5월 28일
Use sprintf / fprintf
Here is an example of making everything 16 characters wide:
A={'s09' 1111222003 321 'P' 'ehz';'z09' 1011222003 321 'O' 'edz'};
A=cellfun(@num2str,A,'Un',false)
for ii = 1:size(A,1);
B{ii} = sprintf([repmat('%16s',1,size(A,2)) '\n'],A{ii,:});
end
B = cat(2,B{:})
The number (16) between the % and the s determines the width that it will print out the entry. For more information type
help sprintf
doc sprintf
or
help fprintf
doc fprintf
댓글 수: 1
추가 답변 (1개)
Iman Ansari
2013년 5월 28일
A={'s09' 1111222003 321 'P' 'ehz';'z09' 1011222003 321 'O' 'edz'};
A=cellfun(@num2str,A,'Un',false)
B=strcat(A(:,1),{' '},A(:,2),{' '},A(:,3),{' '},A(:,4),A(:,5))
댓글 수: 2
Iman Ansari
2013년 5월 28일
편집: Iman Ansari
2013년 5월 28일
A={'s09' 1111222003 321 'P' 'ehz';'ere09' 11222003 31 'O' 'dz'};
for i=1:2
B(i,:)=sprintf('%-5s %-12d %-3d %-s %-3s',A{i,1},A{i,2},A{i,3},A{i,4},A{i,5})
end
참고 항목
카테고리
Help Center 및 File Exchange에서 Characters and Strings에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!