Unique function doesn't work in Simulink

4 ビュー (過去 30 日間)
Andrew Poissant
Andrew Poissant 2017 年 9 月 22 日
コメント済み: Andrew Poissant 2017 年 9 月 25 日
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 件のコメント
OCDER
OCDER 2017 年 9 月 22 日
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 2017 年 9 月 25 日
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?

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

回答 (1 件)

Brian Hannan
Brian Hannan 2017 年 9 月 25 日
You can use the 'stable' setOrder argument to get around this.
  1 件のコメント
Andrew Poissant
Andrew Poissant 2017 年 9 月 25 日
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');

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

カテゴリ

Help Center および File ExchangeShifting and Sorting Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by