【问题标题】:msgbox in MATLABMATLAB 中的 msgbox
【发布时间】:2013-08-06 13:01:38
【问题描述】:

我想在 msgbox 中显示我的输出,所以我使用了msgbox(num2str(output)),但我想命名每一行,例如:

Red    25
Green  52
Yellow 88

但是当我尝试这样做时,它会说

Error using horzcat
     CAT arguments dimensions are not consistent.

当该窗口弹出并且用户按下“确定”时,将弹出另一个窗口询问

W = questdlg('Would you like to retrain or test the network?', ...
        'Artificial Neural Network', 'Retrain', 'Test', 'Exit', 'Exit');

那么,如何格式化我的 msgbox,一旦按下 OK 按钮就会弹出另一个窗口?

任何帮助将不胜感激!

谢谢!

【问题讨论】:

  • 输出到底是什么样的?只是一些数字或类似单元阵列的东西?
  • 它是一个 8 行 1 列的矩阵。我希望每一行都有不同的名称。这可能吗?

标签: matlab msgbox


【解决方案1】:

对于您的第一个问题,您可以使用cell array 表示法来格式化您的消息框文本:

rVal = 25;
gVal = 35;
bVal = 45;
msg = {['Red   ',num2str(rVal)];...
       ['Green ',num2str(gVal)];...
       ['Blue  ',num2str(bVal)]};

这允许您垂直连接多长度字符串。

如果您的输出是 Nx1 列向量,您始终可以使用 cellfun 以这种方式对其进行格式化:

output = [25;35;45];
msgTxt = {['Red   '];['Green '];['Blue  ']};
msgNum = cellfun(@num2str,num2cell(output),'UniformOutput',false);
msg = cellfun(@(x,y) [x,y],msgTxt,msgNum,'UniformOutput',false);

只要将 msgTxt 大小与输出大小相匹配,这对于任何大小的输出变量都应该可以正常工作。

至于让你的程序等待用户响应,试试uiwait

mH = msgbox(msg);
uiwait(mH)
disp('Let''s continue...')

【讨论】:

  • 是的!谢谢你! :) 你能向我解释一下'UniformOutput'false 位是什么吗?还是它们来自 cellfun 的定义?
  • 他们告诉 cellfun 它需要将结果输出到单元格数组,因为它们的大小/类型不同。如果 cellfun 具有统一的逻辑或数字输出,则没有必要。
【解决方案2】:

msgbox可以这样格式化

R=23;G=35;B=45; %given values

    (msgbox({['Red ',num2str(R)];['Green ',num2str(G)];['Blue ',num2str(B)]; }));

在你问题的后面部分之后

uiwait(msgbox({['Red ',num2str(R)];['Green ',num2str(G)];['Blue ',num2str(B)]; }));

W = questdlg('Would you like to retrain or test the network?', ...
        'Artificial Neural Network', 'Retrain', 'Test', 'Exit', 'Exit');

【讨论】:

  • 谢谢,但每次结果都不同.. 所以不是 25 而是 6.. 有没有办法可以命名每一行,然后 MATLAB 会自动将第一行与第一行对齐行等等?
  • @Chrysovalando 立即查看
  • @Doresoom 和 John 正如我对 Lucius 所说,我的结果是一个 8 行 1 列的矩阵,我想为每一行命名......这可能吗?
猜你喜欢
  • 2012-11-17
  • 2016-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多