【问题标题】:replace the command 'set' in matlab GUI替换 matlab GUI 中的命令“set”
【发布时间】:2012-12-22 22:36:17
【问题描述】:

我如何在 matlab 的 GUI 中使用命令“set”,它可以保留以前的答案而不是用新的答案替换它。例如,当我使用 for 循环并获得多个输出时,在普通的 matlab 代码中,它将保留所有输出并将其打印在屏幕上,如下所示:

for i=2:length(contextt)
if ~isequal(co1,co2)
if strcmp(q,pc) || ~ismember(tt1(length(tt1)),tt3)
       fprintf('RKC = { %s , %s }\n',pc,cc)

   set(textA,'string',['RKC = {',pc ,',', cc,'}']);            

end
end
end

结果如下:

 answer = { a0.b0.d6 , a0.c0 }
 answer = { a0.c0 , a0.c0.d5 }
 answer = { a0.c1.b2.d13 , a0.c1.c3 }

但在 GUI 版本中,当我键入时:

set(textA,'string',['answer = {',x ,',', m,'}']); 

它只会给我最后一个答案意味着每次 for 循环开始时它都会更新答案:

 answer={a0.d2.c2 , a0.d2.c2.d10}

GUI 中是否有任何命令可以保留答案并将每个答案放在一行中,就像 fprintf 一样..

谢谢

【问题讨论】:

    标签: matlab user-interface


    【解决方案1】:

    您可以创建一个新变量来保存以前的结果和新的结果。

    例如:

    str='';
    for i=1:6
    str=[str; num2str(i)];
    end
    

    现在当你使用 set(handle,'string',str) 时,它会显示:

    1
    2
    3
    4
    5
    6
    

    【讨论】:

    • 非常感谢您的支持.. 但是因为我在代码中有 for 循环和 if 语句(我确实添加了与输出相关的部分)我不知道有多少输出将是为了选择我...
    • 我尝试了你的方法并且它有效.. 再次感谢你......但问题是每个输出应该在同一行中包含 2 个字符串值.. 在我的代码中它使这两个值在两行..使每个输出 bvalue 在单独的行中...代码是 str={pc , cc}; str1=[str; str1]; end end end end set(textA,'string',str1);
    • 在 Matlab 中,您可以在一行或两行中连接: inLine=[str, ' ' , str];牵引线=[str;字符串];如果我理解您的最后评论,您可以将 str={pc, cc} 替换为 str=[pc, ' ', cc]。这将在两个字符串之间添加一个空格。此致。 P.S 我找到了一个可以帮助你的网站:[link] (mathworks.com/help/matlab/ref/strings.html)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    • 2018-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多