我有以下的矩阵在Matlab声明:Matlab的不递增我的变量
EmployeeData =
1 20 100000 42 14
2 15 95000 35 14
3 18 70000 28 14
4 10 85000 35 14
5 10 40000 21 12
6 4 45000 14 8
7 3 50000 21 10
8 5 55000 21 14
9 1 25000 14 7
10 2 50000 21 9
42 4 100000 42 10
其中第1列表示ID号,2代表年,3是工资,4是休假日和5生病天。我试图找到列的最大值(在本例中为薪金列),并打印出与该值关联的ID。如果多个员工拥有最大值,则应显示具有该最大值的所有ID。因此,这里是如何我天真地实现了一个办法做到这一点:
>> maxVal = [];
>> j = 1;
>> for i = EmployeeData(:, 3)
if i == max(EmployeeData(:, 3))
maxVal = [maxVal EmployeeData(j, 1)];
end
j = j + 1;
end
但它显示maxVal
是在我的工作区变量[]
,而不是[1 42]
如我所料。当在for
循环的if
上述调试插入disp(i)
,我得到下面的输出:
100000
95000
70000
85000
40000
45000
50000
55000
25000
50000
就像我的预期。但是,当我转的是disp(i)
有disp(j)
,我得到这个对我的输出:
1
我在做什么错?如果这不起作用?
你的for循环只执行一次,我已经完成所有这些值,然后下降到j。 (:,3)不会运行每行的值,而是运行一次的列值。 – 2014-10-07 22:42:19