【问题标题】:Arithmetic problem with for loop in MATLAB guideMATLAB指南中for循环的算术问题
【发布时间】:2019-05-22 20:23:55
【问题描述】:

我是 MATLAB 新手。 我想在 for 循环中使用这个公式:ℓ????=taper1*ℓ????−1 没有错误消息,但我在输出中看不到正确的值。 (我用计算器程序控制我的值)(我检查了我的变量。并在这个循环之前确认它们是真的)。 我的第二个问题是我不知道如何在每个增量中添加新行。 这是我的尝试:

l= (1:N); //creating and empty array
l(1)=((3*(10^8))/(2*f1)); //formula 
for i = 2:N
    l(i) = taper1 * l(i - 1);
    set(handles.popupmenu3,'String',l(i) );
end

我试图用这个添加新行但没有用

set(handles.popupmenu3,'String',l(i) \n );

【问题讨论】:

    标签: matlab for-loop popup matlab-guide


    【解决方案1】:

    我认为您正在尝试将set 的数值转换为String

    使用:num2str(l(i))l(i) 转换为String

    添加新行,可以使用sprintf,如下:

    set(handles.popupmenu3, 'String', sprintf('%f\n', l(i)));
    

    以下代码似乎对我有用:

    N = 3;
    f1 = 1;
    taper1 = 0.5;
    
    l = (1:N); %creating and empty array
    l(1)=((3*(10^8))/(2*f1)); %formula 
    for i = 2:N
        l(i) = taper1 * l(i - 1);
        %set(handles.popupmenu3, 'String', num2str(l(i)));
        set(handles.popupmenu3, 'String', sprintf('%f\n', l(i)));
    end
    

    如果您将所有元素的值添加到问题中,这可能会有所帮助。


    如果要获取结果列表,请将字符串值添加到 cell array:
    添加行尾\n 不是这样做的方法。
    popupmenu 中的每一行都是cell array 中的成员。

    例如:
    S{1} = 'aaa';
    S{2} = 'bbb';
    S{3} = 'ccc';
    set(handles.popupmenu3, 'String', S);

    检查以下代码是否有效:

    N = 3;
    f1 = 1;
    taper1 = 0.5;
    
    l = (1:N); %creating and empty array
    l(1)=((3*(10^8))/(2*f1)); %formula 
    for i = 2:N
        l(i) = taper1 * l(i - 1);
        %set(handles.popupmenu3, 'String', num2str(l(i)));
    
        str = get(handles.popupmenu3, 'String'); %Get older value of popupmenu3
        str{end+1} = num2str(l(i)); %Add new string to popupmenu list
        set(handles.popupmenu3, 'String', str); %Update popupmenu3
    end
    

    Result

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 1970-01-01
      • 2021-02-28
      相关资源
      最近更新 更多