我是MatLab的新手和一般的编程。我遇到了以下问题:
每4人参加比赛,每人以100分开始。每个人随机玩另一个玩家。
如果一名球员获胜,他们将获得1分,并且输掉的球员将失去1分。
当玩家得分为零时,他们就会被淘汰。
当只有一名球员离开时,比赛结束了。
我假设我需要创建一些包含4个玩家及其4个分数的矩阵阵列
A = [1 2 3 4; 100 100 100 100]
这是否正确?一旦玩家达到零,我将如何移除玩家和他们的分数。
任何帮助都会得到很大的回复。感谢
答案 0 :(得分:1)
我认为你是在正确的轨道,假设你这样定义A,你可以删除具有非正分数的玩家:
A = [1 2 3 4; 100 100 0 100]
idx = A(2,:)<0.01 %To prevent suffering from rounding errors
A = A(:,~idx)
答案 1 :(得分:0)
我在看到这个答案时遇到了这个问题(我也是Matlab的新手)。 但是,上述答案似乎过于复杂;正如我在经过一些实验后发现的那样,Matlab的矩阵寻址和赋值运算符可以非常简单地解决这个问题:
A = [1 2 3 4; 100 0 100 100]
A = 1 2 3 4
100 0 100 100
A(:,A(2,:)== 0)= []
A = 1 3 4
100 100 100
我希望这对某人有用。
答案 2 :(得分:-1)
第一个答案绝对正确。但是,为了解决这个问题,有一个为此目的而构建的直接语法,使用sparse
你也可以直接从0提取玩家:
A = [1 2 3 4; 100 100 0 100]
ans= sparse (A(2,:))
祝你好运;)