【问题标题】:sprintf in MATLABMATLAB 中的 sprintf
【发布时间】:2015-01-24 01:17:26
【问题描述】:

如何在 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 

它不太正常。

【问题讨论】:

标签: matlab printf


【解决方案1】:

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

另外,您希望显示值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

function [desInput] = varInfo (numVec)

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

end

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

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 解决方案中,我插入了一个换行符,以便命令提示符 >> 在显示时位于您的文本下方。

【讨论】:

  • 这是我根据您在 fprintf 建议中的建议得到的输出:此变量属于 char 类,值为 '73'。此变量属于 MATLAB 类!当我做第一件事时,它的值为'info1 = 116:这个变量属于char类,值为'73'。这个变量属于爱MATLAB!并且值为 '
  • 啊哈,是的,您的 sprintf 声明也不正确。您正在将您的号码转换为字符串。我会修改。一开始我没看到。
  • @JudithNelson-Spanks - 已修改。
  • @JudithNelson-Spanks - 我很高兴 :) 通常的做法是接受对您有帮助的答案。没有压力,但这会很棒:)。单击顶部左侧我的答案旁边的复选标记图标。
【解决方案2】:

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

查看区别:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    相关资源
    最近更新 更多