Matlab - 在按下按钮之前改变按钮的颜色

时间:2015-12-03 03:09:47

标签: matlab for-loop

我试图在实际推动它们之前更改mat alb中某些按钮的颜色,但只是根据某个矩阵中的值(这些值可能会改变)。运行以下代码但结果很奇怪。我对for循环做错了什么?

这是矩阵的一个例子:

A = [0 0 3 1 1];

我在这里设置了屏幕:

scr = get(0, 'screensize');
f1 = figure(1);
set(f1, 'menubar', 'none');
set(f1, 'position', [scr(1) scr(2) scr(3) scr(4)]);

这些是按钮:

h1 = uicontrol('Style', 'pushbutton',...
'BackgroundColor', '[0.91 0.91 0.91]',...
'Position', [200 200 100 100]);
h2 = uicontrol('Style', 'pushbutton',...
'BackgroundColor', '[0.91 0.91 0.91]',...
'Position', [300 200 100 100]);
h3 = uicontrol('Style', 'pushbutton',...
'BackgroundColor', '[0.91 0.91 0.91]',...
'Position', [400 200 100 100]);
h4 = uicontrol('Style', 'pushbutton',...
'BackgroundColor', '[0.91 0.91 0.91]',...
'Position', [500 200 100 100]);
h5 = uicontrol('Style', 'pushbutton',...
'BackgroundColor', '[0.91 0.91 0.91]',...
'Position', [600 200 100 100]);

我将它们放在一个数组中:

L = [h1 h2 h3 h4 h5];

现在我希望按钮根据矩阵中的值改变颜色。因此,如果矩阵中的第一个值为零,则第一个按钮的颜色应为白色。如果矩阵中的 second 值为零,则 second 按钮的颜色应为白色,依此类推。

for i = length(A)

if A(i) == 0
    set(L(i),'Backgroundcolor', 'w');
elseif A(i) == 1
    set(L(i),'Backgroundcolor','b');
elseif A(i) == 2
    set(L(i),'Backgroundcolor','y');
elseif A(i) == 3
    set(L(i),'Backgroundcolor','g');

end
end

但最后我得到最后一个按钮蓝色,其他按钮保持不变!它们都应该改变颜色。

1 个答案:

答案 0 :(得分:0)

您的for循环仅覆盖最后一个索引。将其更改为

for i = 1 : length(A)

它会正确迭代。