MATLAB中的sprintf

时间:2015-01-23 16:59:05

标签: matlab printf

如何在MATLAB中的sprintf函数中显示变量的值?例如,我需要显示

  

此变量的类型为char,值为'whatever'

到目前为止,我的代码看起来像这样:

function [desInput] = varInfo (numVec)  

cLass = class(numVec);  
var1 = num2str(numVec);  
desInput = sprintf('This variable is of class %s and has a value of ''%d''.', cLass, var1);       

end 

它没有正常工作。

2 个答案:

答案 0 :(得分:1)

sprintf 生成所需格式的字符串并将其放入变量中。如果要显示它,请使用fprintf,或在使用disp(desInput);时在创建的字符串上使用sprintf

此外,您希望显示值numVec,但在显示之前将其转换为字符串。因此,请在显示您的号码时移除num2str来电,或使用%s作为修饰符。

因此,请执行以下操作:

function [desInput] = varInfo (numVec)

cLass = class(numVec);
desInput = sprintf('This variable is of class %s and has a value of ''%d''.', cLass, numVec);
disp(desInput);

end

OR

function [desInput] = varInfo (numVec)

cLass = class(numVec);
fprintf('This variable is of class %s and has a value of ''%d''.\n', cLass, numVec);

end

OR

function [desInput] = varInfo (numVec)

cLass = class(numVec);
var1 = num2str(numVec);
desInput = sprintf('This variable is of class %s and has a value of ''%s''.', cLass, var1);
disp(desInput);

end

OR

function [desInput] = varInfo (numVec)

cLass = class(numVec);
var1 = num2str(numVec);
fprintf('This variable is of class %s and has a value of ''%s''.\n', cLass, var1);
disp(desInput);

end

请注意,在fprintf解决方案中,我插入换行符,以便在显示时将命令提示符>>放在文本下方。

答案 1 :(得分:0)

num2str生成一个字符串表示。您也应该使用%s

要看到差异:

N = 65; % random example
fprintf('%d\n', num2str(N)); % produces 5453
fprintf('%s\n', num2str(N)); % produces 65