在Octave中打印未知类型的变量的值,不带换行符



我的意思是打印未知类型的变量myvar的值,用任意文本连接,不带换行符。

我知道如何在没有换行符的情况下打印:printf('My var = %<format specifier>, is it ok for you?', myvar),但这需要知道myvar的类型。

我知道如何打印未知类型的变量的值:disp(myvar),但这总是打印一行换行符(此外,我不知道如何通过disp进行连接(。

如何打印My var = <any variable>, is it ok for you?<no newline>

你真的不能这么做。Octave并不是真的那样工作。

然而,可以做的是准备好sprintf生成的字符串,可以将其插入到输出中。例如

var1 = 123;    % double
var2 = 'abc';  % char
var3 = cell(); % cell
Var = var2;   % choose from var1, var2, or var3
switch class(Var)
case {'double'}, FormattedStr = sprintf('Value is %d', Var);
case {'char'}  , FormattedStr = sprintf('Value is %s', Var);
case {'cell'}  , % ... etc
otherwise      , FormattedStr = sprintf('Value is unknown');
end
fprintf( 'As I said before: %s', FormattedStr);

或者,您可以创建一个";toString"函数,该函数尝试检测类型并返回适当的字符串表示形式。

如果真的想使用disp的输出,那么理论上可以使用fdisp写入文件,然后从该文件中读取并相应地处理换行符。但我认为这太过分了。

最新更新