我是 MatLab 和一般编程的新手。我已经设置了以下问题:
4名选手参加比赛,每人以100分开始。
每个人随机扮演另一个玩家。
如果一名玩家获胜,他们将获得 1 分,而失败的玩家将失去 1 分。
当玩家得分为零时,他们将被淘汰。
当只剩下一名玩家时,游戏结束。
我假设我需要创建某种矩阵数组,其中包含 4 个玩家和他们的 4 个分数
A = [1 2 3 4; 100 100 100 100]
这是正确的吗?一旦达到零,我将如何删除玩家及其分数。
任何帮助都会得到很大的帮助。谢谢
我认为您走在正确的轨道上,假设您将 A 定义为这样,您可以删除得分为非正数的玩家:
A = [1 2 3 4; 100 100 0 100]
idx = A(2,:)<0.01 %To prevent suffering from rounding errors
A = A(:,~idx)
我自己在寻找这个答案时偶然发现了这个页面(我也是 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
我希望这对某人有用。
第一个答案是绝对正确的。但是,为了解决这个问题,有一个为此目的而构建的简单语法,使用sparse您还可以直接提取具有 0 分的玩家:
A = [1 2 3 4; 100 100 0 100]
ans= sparse (A(2,:))
祝你好运 ;)