MATLAB社区

MATLAB,社区和更多

Cody新闻:在你提交代码之前测试它!

看到了吗?这太酷了。

你现在看到的是科迪的新刮板区。这将使扮演Cody更有效率,更少的混乱,更愉快的所有方式。如果你以前从未玩过Cody,你应该尝试它,看看这个新功能的行动。它是这样工作的。

科迪有超过4300个问题。那么,如何决定从哪里开始呢?我使用把精力集中在一组特定的主题问题上。我喜欢当我完成一个团队(并赢得相应的徽章)时所获得的满足感。

最近我一直在努力索引四世它是一系列关注索引问题的小组中的第四名。这是我刚刚看到的一个:2366题。既不极小也不极大.给定一个vector对象,返回所有既不是局部最小值也不是局部最大值的元素。

所以我进入问题页面并点击Solve。

我一到那里,就能看出有些不同。现在,不仅仅是我写函数的地方,还有一个叫做"Scratch Pad"的地方还有一个叫做"Output"的地方。我可以像往常一样,把函数写在解区域。但是现在,不用马上提交代码,我可以用Scratch Pad试几次。因此,我可以为x设置一个输入值,然后调用函数,看看它是否返回正确的答案,而不是盲目地写一些代码并希望得到最好的结果在提交之前

让我们看看。我们取一个向量[1 2 1 0 1 2 1]。正确的输出(这是问题陈述中的一个例子)是[111],因为两个2是局部最大值,而0是局部最小值。我怎么写代码来解决这个问题呢?我想我会使用diff,因为每个元素的差异必须在一个局部极值处改变符号(在这个问题中,似乎我们只关心单点极值)。

我的第一次尝试是这样的:

d =符号(diff (x));Dd = [0 d;d 0];y = x(和(dd) ~ = 0);

使用Scratch Pad,我能够验证我得到了问题陈述中所有三个示例的正确答案。我充满信心地按下了Submit按钮。

啊!在测试4中,当输入向量x是平的时,这种方法就失败了。我应该把它看成一个测试输入。

我加强了我的代码,这一次它工作了。万岁!

d =符号(diff (x));Dd = [0 d;d 0];y = x(刺激(dd) ~ = 1);

现在说说关于科迪我最喜欢的事情。一旦我解决了这个问题,我就可以去看看其他人是如何解决它的。有些人像我一样使用不同的,但这是什么?有些解决方案使用了我以前万博 尤文图斯从未见过的函数。以下是当前领导的代码。

x (~ (islocalmin (x) | islocalmax (x)));

什么? !如果我知道这些,这个问题就简单了。让我们做些调查…

果然,它们就在文档里:islocalminislocalmax.它们是什么时候加进来的?我将给你展示一个有趣的技巧来找出答案。向下滚动到函数参考页的底部,在看也行,你可以看到MATLAB版本,其中一个给定的函数第一次出现。

这不是很酷吗?现在我知道了两个有用的功能,它们已经发布了四年了!我有点失望,因为我之前不知道这些,但重要的是,现在我知道了。我之所以知道是因为科迪。通过这种方式,我学到了很多技巧和特殊的函数。

你也会的,如果你加入的乐趣.有了科迪的新刮擦板,乐趣就更容易了。

|
  • 打印
  • 发送电子邮件

评论

要留下评论,请点击在这里以登录您的MathWorks帐户或创建一个新的帐户。