我试图在实际推动它们之前更改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
但最后我得到最后一个按钮蓝色,其他按钮保持不变!它们都应该改变颜色。
答案 0 :(得分:0)
您的for循环仅覆盖最后一个索引。将其更改为
for i = 1 : length(A)
它会正确迭代。