sprintf函数:不像它对MATLAB那样以八度音程工作

时间:2014-05-20 10:09:39

标签: algorithm matlab printf octave

我需要使用octave .m文件作为包装来调用另一个commanline工具。在下面的一段代码中,它给了eroor in the line' Detector'。它在Matlab上运行得相当不错,但现在我需要为八度音程做。 Octave的文档并没有谈论多行sprintf。任何人都可以分享解决方案来处理这种情况。

%s =sprintf(...
s =sscanf(...
[...
'                                                                   \n'...
'                                                                   \n'...
'Detector {                                                         \n'...    
'   [Plane: a_x(%f,%f,%f) a_y(%f,%f,%f) center(%f,%f,%f)]           \n'...
'   x1=%f  x2=%f  nx=%d                                             \n'...
'   y1=%f  y2=%f  ny=%d                                             \n'...
'   n_x_sub=%d n_y_sub=%d                                           \n'...        
                                                                                  \n'...
'   %s                                                              \n'...    
'}                                                                  \n'...
'                                                                   \n'...
Beam                                                            \n'...  
'   start(%f,%f,%f)                                                 \n'...
'   %s                                                              \n'...
'   %s                                                              \n'...
'   %s                                                              \n'...
'}                                                                  \n'...
'                                                                   \n'...    
'Commands {                                                         \n'...
'   no_noise                                                        \n'...
'}                                                                  \n'...
],...
eu(1),eu(2),eu(3),...
ev(1),ev(2),ev(3),...
a(1)-d*ew(1),...
a(2)-d*ew(2),...
a(3)-d*ew(3),...
-(uoff+0.5)*par.du,...
(par.nu-uoff-0.5)*par.du,...
par.nu,...
-(voff+0.5)*par.dv,...
(par.nv-voff-0.5)*par.dv,...
par.nv,...
par.up,...
par.up,...
CT_scale,...
a(1),...
a(2),...
a(3),...
keV,...
kV,...
mAs);

1 个答案:

答案 0 :(得分:0)

在GNU Octave中处理多行字符串有很多种可能性。将以下内容作为其中之一:

sprintf("                     \
This is the first line\n      \
and this is the second\n      \
The square root of %d is %d\n \
", 4, 2)

\字符是字符串断路器,只要您希望在下一个脚本行上继续字符串,就必须使用它。