首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >另外,在输出文件MATLAB fprintf中更改字符

另外,在输出文件MATLAB fprintf中更改字符
EN

Stack Overflow用户
提问于 2013-10-13 17:59:35
回答 1查看 130关注 0票数 0

我有两个数据结构:

代码语言:javascript
复制
atomName <855*1 cell>
atomSASA <855*1 double>

我在代码中使用它来生成输出文件:

代码语言:javascript
复制
%write out SASA values for individual atoms to file
results_file = fopen('output.txt','w');
fprintf(results_file,'SASA for Individual Atoms: \n');
i=1;
while i < (855)
    fprintf(results_file,'Atom %s %s: %.3f\n',i,cell2mat(atomName(i)),atomSASA(i));
    i = i + 1;
end

对于前32行,该文件似乎是正确的,但从第33行开始,在单词Atom之后有一个额外的字符。字符改变了每一行,最终通过数字、大写字母a、小写字母a等。我想从每一行中删除这个额外字符:

代码语言:javascript
复制
Atom ! HG23: 6.286
Atom " N: 0.000
Atom # CA: 0.000
Atom $ C: 0.000
Atom % O: 0.000
Atom & CB: 0.000
Atom ' CG: 0.000
Atom ( CD1: 0.000
Atom ) CD2: 0.000
Atom * CE1: 0.000
Atom + CE2: 0.000
Atom , CZ: 0.000
Atom - OH: 0.000
Atom . H: 0.000
Atom / HA: 0.000
Atom 0 HB2: 0.000
Atom 1 HB3: 0.000
Atom 2 HD1: 0.000
Atom 3 HD2: 0.000
Atom 4 HE1: 0.000
Atom 5 HE2: 0.000
Atom 6 HH: 0.000
Atom 7 N: 0.000
Atom 8 CA: 0.000
Atom 9 C: 0.000
Atom : O: 0.000
Atom ; CB: 0.000
Atom < CG: 0.000
Atom = CD: 0.000
Atom > CE: 1.208
Atom ? NZ: 1.312
Atom @ H: 0.000
Atom A HA: 0.000
Atom B HB2: 0.000
Atom C HB3: 0.000
Atom D HG2: 0.000
Atom E HG3: 0.000
Atom F HD2: 0.000
Atom G HD3: 0.000
Atom H HE2: 0.000
Atom I HE3: 33.979
Atom J HZ1: 0.000
Atom K HZ2: 0.000
Atom L HZ3: 44.513
Atom M N: 0.000
Atom N CA: 0.000
Atom O C: 0.000
Atom P O: 0.000
Atom Q CB: 0.000
Atom R CG: 0.000
Atom S CD1: 0.000
Atom T CD2: 0.000
Atom U H: 0.000
Atom V HA: 0.000
Atom W HB2: 0.000
Atom X HB3: 0.000
Atom Y HG: 0.000
Atom Z HD11: 0.000
Atom [ HD12: 0.000
Atom \ HD13: 0.000
Atom ] HD21: 0.000
Atom ^ HD22: 0.000
Atom _ HD23: 0.000
Atom ` N: 0.000
Atom a CA: 0.000
Atom b C: 0.000
Atom c O: 0.000
Atom d CB: 0.000
Atom e CG1: 0.000
Atom f CG2: 0.000 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-13 18:04:35

您可能应该将fprintf替换为:

代码语言:javascript
复制
fprintf(results_file,'Atom %i %s: %.3f\n', i, atomName{i}, atomSASA(i));

要打印一个整数,您应该使用%i%d,对于%s,整数被解释为ascii值:

代码语言:javascript
复制
>> fprintf('as ascii: %s\n', 66)
as ascii: B
>> fprintf('as number: %i\n', 66)
as number: 66

另一件事是:编写atomName{i}比编写cell2mat(atomName(i))更容易。用大括号索引单元格数组将为您提供第一个单元格的内容,这是您想要的。用普通括号对其进行索引将为您提供一个包含第一个单元格内容的1x1单元格数组:

代码语言:javascript
复制
>> atoms = {'aa','bb','cc'}
atoms = 
    'aa'    'bb'    'cc'
>> class(atoms{2})
ans =
char
>> class(atoms(2))
ans =
cell

手册

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19348403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档