Matlab数组删除零值

时间:2013-02-15 10:00:31

标签: arrays matlab matrix zero

我是MatLab的新手和一般的编程。我遇到了以下问题:

每4人参加比赛,每人以100分开始。

每个人随机玩另一个玩家。

如果一名球员获胜,他们将获得1分,并且输掉的球员将失去1分。

当玩家得分为零时,他们就会被淘汰。

当只有一名球员离开时,比赛结束了。

我假设我需要创建一些包含4个玩家及其4个分数的矩阵阵列

A = [1 2 3 4; 100 100 100 100]

这是否正确?一旦玩家达到零,我将如何移除玩家和他们的分数。

任何帮助都会得到很大的回复。感谢

3 个答案:

答案 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,:))
祝你好运;)