除去在载体中的所有冗余元件,但保持在其原始位置中的每个值的第一次出现。因此,如果
A = [5 3 6 4 7 7 3 5 9]
然后
重复数据删除的(a)= [5 3 6 4 7 9]
为什么我用ver.2012b通过所有测试,但在科迪不succeded?
并[b,IA] =唯一的(一个 '第一');
B =调用sortRows([B; IA] '2)';
B =(1,:);
解决了一个线!
好的问题
嗨,bainhome:
科迪是基于MATLAB,不R2012b的“当前”版本。许多功能不变,但有几个已经改变(修改,新的或已移除),包括“独一无二”。
您必须在“遗产”标志添加到参数列表保存从R2012b和以前的版本“独一无二”的函数的行为 - 指的是文档(链接张贴的Jakub Galecki)。
-div
如果你知道一个特定的功能它太容易了。
该解决方案是正确的。我检查了在Matlab中2试验载体的结果,它给出正确的值。
你好,erqnzgaa svruehal。
在你的代码的倒数第二行,
B(发现(B == 0))= [];
确实会从输出向量删除全部为零。
然而,在测试案例2输入向量本身已经包含了零个值。因此,必须有正好一个在从该函数的输出向量的零发生。
在你的代码是没有办法从“标记”零个值,你介绍区分“真正的”零个值。因此,在倒数第二行中删除所有的零导致不正确的结果。
一个快速的方法来解决你的代码是选择作为没有出现在输入向量“标记”的东西。例如,任何的:并不推荐使用NaN时,-9999,1234这一点,因为它是不稳健给出正确答案,任何一般的输入向量(在该条件下的使用作为NaN的标记楠可能是个例外输入向量应该被忽略)。
修正您的代码的另一种方法是摆脱了代码集的元素为0(或任何其它标记的值),而是移位它设置元素[](从而直接去除这些元素)的代码,以使其显示内你内心的循环。
-div
使用MATLAB的在建造功能,这个问题就可以轻松完成。
我很奇怪,最好的答案是尺寸:10,他是怎么做到了!
好!
//www.tatmou.com/help/matlab/ref/unique.html
何必编码已经取得的编码?
你好,阿明纳扎里。
在制定自己的脚本来满足测试用例祝贺。
作为反馈的点,我建议这个功能可能并不健壮/一般足以处理在输入矢量值的任何可能的组合。
上线c(1,M(FF))= 0的零被引入作为在新的向量c一个 '标记'。鉴于是c被定义为通过千万从偏移,这等效于在该载体的使用的一个-10000000“标记”值。
假设输入向量被作为[-10000000 2 2 1]提供。然后将上面的函数将立即集合C = [0 10000002 10000002 10000001]。通知已发生的零的“真正”值,这不能从稍后引入的“标记”值,并且正确的结果区分,因此不能用于此输入来获得。