为什么我使用Ver.2012B可以通过所有测试,但在Cody中没有成功?
[B,IA] =独特(A,'First');
b = sortrows([b; ia],2)';
b = b(1,:);
在一行中解决了!
好问题
嗨,贝恩姆:
CODY是基于MATLAB的“当前”版本,而不是R2012B。许多函数都没有变化,但有一些更改(修改,新或删除),包括“独特”。
您必须将“遗留”标志添加到参数列表中,以保留来自R2012B的“唯一”功能的行为和先前版本 - 请参阅文档(Jakub Galecki发布的链接)。
-div.
如果你知道特定功能它太容易了。
该解决方案是正确的。我已经检查了2.测试矢量a在matlab中的结果,它给出了正确的值。
你好,Erqnzgaa svruehal。
在您的代码的倒档线上,
b(查找(b == 0))= [];
确实将从输出矢量中删除所有零。
但是,在测试用例2中,输入向量本身已包含零值。因此,来自该功能的输出向量中必须恰好存在零。
在您的代码中,无法将“真正”零值与您介绍的“标记”零值区分开来。因此,在移除所有零的倒数第二个线中导致结果不正确。
修复您的代码的快速方法是选择作为“标记”的“标记”某些不显示在输入向量中的某些内容。例如,任何一个:NaN,-9999,1234。这不是真正推荐的,因为给予任何通用输入载体的正确答案并不稳健(具有在南中的条件下使用NaN作为标记的例外输入载体应忽略)。
修复代码的另一种方法是摆脱将元素设置为0(或任何其他标记值)的代码,而是将设置元素设置为[]的代码(从而直接删除这些元素),以便它出现在其中你最内心的循环。
-div.
使用了MATLAB的构建功能,完成了这个问题。
我想知道最好的答案是尺寸:10。他是如何做到的!
good!
//www.tianjin-qmedu.com/help/matlab/ref/unique.html.
为什么要打扰编码已经编码了什么?
你好,amin nazari。
恭喜您设计自己的脚本来满足测试用例。
作为反馈的点,我建议该函数可能不足/一般足以处理输入向量中的任何可能的值组合。
在线C(1,m(ff))= 0零被引入新矢量c中的“标记”。鉴于C被定义为从A偏移10000000的偏移,这相当于在矢量a中使用-10000000的“标记”值。
假设输入向量A提供为[-10000000 2 2 1]。然后,上述功能将立即设置C = [0 10000002 10000002 10000001]。请注意,已发生“真正”的零值,从后来介绍的“标记”值不能区分,因此无法获得正确的结果。