a = [1 2 3 4 5 5 6 6 6 7 6 1]
p = [];
for i=1:length(a)
pf = find( a==a(i) );
if length(pf) > 1
p = [p pf];
end
end
a(p)=[]
ابتدا با دستور find عناصری که برابر با a(i) هستند را پیدا میکند و اندیسهایی از ماتریس a را که با a(i) برابر هستند در متغیر pf میریزد. بعد با دستور length طول pf را اندازه میگیرد. اگر طولش بیش از یک باشد به این معنی است که مقدار a(i) بیش از یکبار تکرار شده است. حال که چنین است مقدار یا مقادیر pf را در p ذخیره میکند. وقتی از حلقه for خارج شویم، متغیر p شامل تمام اندیسهایی است که تکراری هستند. حالا کافی است که دستور[]= a(p) اجرا شود تا تمام مقادیر تکراری حذف شوند.
دیدگاه