フィルターのクリア

How would I create my own 'unique' function without using the built in unique?

5 ビュー (過去 30 日間)
Alexander
Alexander 2014 年 4 月 29 日
編集済み: Sean de Wolski 2014 年 4 月 30 日
I understand that the built in Unique function is stating that whatever function you define as unique is the same data set but without repetitions.
should I create a function file such as
function[unique,c] = myuni_1(A)
rows(A)= size(A,1);
columns(A) = size(A,2);
and then proceed to define the rows and columns as itself? I'm a bit confused here.
  3 件のコメント
Alexander
Alexander 2014 年 4 月 29 日
My TA mentioned my professor may ask a question like this on my final exam and I would like to be prepared for anything. Also, my own curiosity is driving me to ask it.
I've looked at the function file on Matlab and it is a very long code. I'm curious if this is even possible with an alternative method that uses less code.
Jan
Jan 2014 年 4 月 30 日
編集済み: Jan 2014 年 4 月 30 日
What exactly should your function do? Which types of input are expected? What is the 2nd output c? Please do not let us guess the details.
Notice that "rows(A)= size(A,1);" is no valid Matlab syntax.

サインインしてコメントする。

採用された回答

Jan
Jan 2014 年 4 月 30 日
A short version:
function U = myUnique(A)
[As, SV] = sort(A(:));
UV(SV) = ([1; diff(As)] ~= 0); % [1, As(2:nA) - As(1:nA-1)];
U = A(UV);
  1 件のコメント
Alexander
Alexander 2014 年 4 月 30 日
works like a charm, i was using 3 different for loops and trying to sort each one by the size of A but got nothing.
Thank you friend!

サインインしてコメントする。

その他の回答 (2 件)

Walter Roberson
Walter Roberson 2014 年 4 月 29 日
Suppose you have two "bags", A and B. Start with A empty.
If B is empty, you are done and A holds the unique values. Otherwise, take one one item, C, out of B (removing it from B). Is there already a copy of C in A? If there is, then throw away C. Otherwise, add C to A. Now restart this paragraph.
  1 件のコメント
Alexander
Alexander 2014 年 4 月 30 日
im just confused about how to pull out a value and place it into the new matrix

サインインしてコメントする。


Sean de Wolski
Sean de Wolski 2014 年 4 月 30 日
編集済み: Sean de Wolski 2014 年 4 月 30 日
How about this?
x = [1 2 3 3 3 3 2 4 5];
[uv,ia] = intersect(x,x)

カテゴリ

Help Center および File ExchangePulsed Waveforms についてさらに検索

タグ

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by