首页 > 解决方案 > MATLAB指南中for循环的算术问题

问题描述

我是 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 );

标签: matlabfor-looppopupmatlab-guide

解决方案


我认为您正在尝试将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

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


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

结果


推荐阅读