MATLAB社区

Matlab,社区和更多

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

看到这个?这太酷了。

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

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

我最近一直在做的索引IV,在一系列集团中恰当的第四个专注于索引问题。这是我只是在看:2366题。既不是极小值也不是极大值.给定一个向量,返回既不是局部最小值也不是局部最大值的所有元素。

所以我转到问题页面,然后单击“解决”。

一旦我到达那里,我就可以看到一些东西是不同的。现在,而不是只是一个空间给我写下我的功能,还有一个名为“划痕垫”的东西,另一个被称为“输出”的区域。我可以像往常一样在解决方框中编写我的功能。但是现在,而不是必须立即提交代码,而我可以用划痕垫尝试几次。所以,而不是盲目地写一些代码并希望最好,我可以为x设置一个输入值并调用函数,看看它是否返回了正确的答案在提交之前

让我们看看。我们取一个像[1 2 1 0 1 2 1]这样的向量。正确的输出(这是问题语句中的一个示例)是[1 1 1],因为两个2s是局部极大值,而0是局部最小值。我该如何编写代码来解决这个问题呢?我想我将使用diff,因为元素之间的差异必须在局部极值处改变符号(似乎在这个问题中我们只关心单点极值)。

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

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

使用Scratch Pad,我能够验证问题声明中显示的所有三个示例的正确答案。感到自信,我按下提交按钮。

arth!当输入向量X平坦时,测试4在测试4上失败。我应该认为是作为测试输入。

我收紧了我的代码,这次它的工作原理。Huzzah!

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

现在我最喜欢的是科迪。一旦我解决了这个问题,我就可以去看看其他人是如何解决它的。有些人像我一样用diff,但这是什么?有些解决方案使用了我以前金宝搏官方网站从未见过的函数。以下是当前领导者的代码。

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

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

果然,他们在doc中:islocalminislocalmax..什么时候添加的?我来教你一个妙招来找出答案。向下滚动到函数参考页面的底部看也行,你可以看到一个给定函数首次出现的MATLAB版本。

这不是很酷吗?现在我知道了两个已经发布了4年的有用函数!我有点失望,因为我不知道这些,但重要的是,现在我知道了。我唯一知道的原因就是科迪。我用这种方法学到了很多技巧和特殊的功能。

你也会的,如果你加入乐趣.和Cody的新划痕垫更容易变得更轻松。

|
  • 打印
  • 发送电子邮件

注释

请点击留下评论这里登录到你的MathWorks帐户或创建一个新的。