Unique function doesn't work in Simulink

4 Ansichten (letzte 30 Tage)
Andrew Poissant
Andrew Poissant am 22 Sep. 2017
Kommentiert: Andrew Poissant am 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 Kommentare
OCDER
OCDER am 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 am 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?

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Brian Hannan
Brian Hannan am 25 Sep. 2017
You can use the 'stable' setOrder argument to get around this.
  1 Kommentar
Andrew Poissant
Andrew Poissant am 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');

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Simulink finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by