MATLAB Answers

Unique function doesn't work in Simulink

17 views (last 30 days)
Andrew Poissant
Andrew Poissant on 22 Sep 2017
Commented: Andrew Poissant on 25 Sep 2017
I have a 624x2 matrix that needs to have repeated ordered pairs removed. The first column represents x values and the 2nd column represents y values. There are some repeating pairs and I need to remove them in the matlab function block in Simulink but when I execute the "unique" function in Simulink I get an error saying: An error occurred while running the simulation and the simulation was terminated Caused by: The second operand is not sorted in ascending order. Use SORT first.
How do I get around this error? If I use "sort" then won't I lose my ordered pairs because the two columns will be sorted independently? My highly simplified code is below.
SRM = some 624x2 matrix SRM = unique(SRM(:,:), 'rows');

  2 Comments

OCDER
OCDER on 22 Sep 2017
That's odd, since unique(SRM, 'rows') should remove duplicate rows and sort for you.
If you need to sort by rows, use sortrows .
Andrew Poissant
Andrew Poissant on 25 Sep 2017
Sortrows works well but for some reason simulink is still giving the same error even when I sort by rows. It seems like a really rigid addition to matlab. Any idea how to remove repeated rows without unique?

Sign in to comment.

Answers (1)

Brian Hannan
Brian Hannan on 25 Sep 2017
You can use the 'stable' setOrder argument to get around this.

  1 Comment

Andrew Poissant
Andrew Poissant on 25 Sep 2017
I tried this, but am still getting the same error requesting that I use SORT first. I am getting an error using the following line: SRM = unique(SRM(:,1:2), 'rows', 'stable');

Sign in to comment.

Sign in to answer this question.