【问题标题】:How to best print output to command window during a loop in Matlab?如何在 Matlab 循环期间最好地将输出打印到命令窗口?
【发布时间】:2019-11-19 13:41:24
【问题描述】:

我有一个循环遍历与给定压力值配对的 ID 号列表。该代码工作正常,但不能保证列表具有相同的长度。如果 ID 号没有相应的压力值,我目前有一个带有 continue 语句的 if isempty(stress_value) 循环。所有这些都发生在for id = 1:num_ids 循环中。

我现在尝试将这个id 值(类'double')打印到命令行,如果它没有指定的压力值,那么如果isempty 语句为真,在继续之前的循环。例如,如果我设置 num_ids 等于 101,但我正在迭代的列表只有 ID 值 1-100,我想将这个 101 ID 输出到命令行。

我试过打印这样的错误:

error(['The following ID does not have an assigned stress value: ',id])

这里id 只是打印为e 但是当我在命令窗口中尝试这个时,我不太明白。当我在脚本中运行它时,命令窗口不会打印任何内容。

我也尝试过简单地将 id 的显示命令添加到循环中,如下所示,但是当我运行代码时,什么都没有再次显示:

disp(id)

很抱歉这个简单的问题,但我还没有找到有效的方法来做到这一点,希望您的反馈!

【问题讨论】:

  • “当我在脚本中运行它时,命令窗口不会打印任何内容。”你如何运行脚本?从我坐的地方来看,这没有任何意义。您是否偶然启动了一个新的 MATLAB 会话来运行您的脚本,并在完成后退出该会话?
  • 您似乎没有使用正确的方法。请提供一个最小的工作示例,以便我们回答您的问题。
  • 您好,@Thales 的回答在这种情况下有效。我没有看到格式化为错误的消息会终止代码。我犯的另一个错误是假设 display 也可以输出连接的字符串。

标签: matlab printing


【解决方案1】:

检查fprintf。您可以随意格式化输出。

for id=1:num_ids
    % do something
    if isempty(stress_value)
        fprintf('The following ID does not have an assigned stress value: %d\n',id)
        continue
    end
    % do something
end

error 函数将停止代码执行。

display函数只打印变量的值,不打印变量名。

【讨论】:

  • 如果您的代码有其他地方将信息写入屏幕,您可以将 fprintf 语句更新为 fprintf ( 2, 'The following .....' 这会将语句写入红色文本,以便更加突出
  • 谢谢!这个答案正是我想要的(:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多