remove non-unique columns even if the sign has changed

3 Ansichten (letzte 30 Tage)
LC
LC am 4 Feb. 2025
Kommentiert: Les Beckham am 4 Feb. 2025
I have a 76x16 matrix. Some of the data is repeated and I want to remove repeated columns, which I have tried to do below. However, the numbers are the same but the sign has changed, e.g. columns 8 and 14 are the same data but the signs are reversed (where 8 is +ve, 14 is -ve etc), which my code doesn't acocunt for. The +ve/-ve matters so I cant just abs() the dataset.
I want to keep the first occurence of the repeated columns, where I should be left with 6 columns of data. Can anybody help?
mlag= unique(newca1.','rows','stable').'
mlag(:,max(mlag) == 0) = [];

Akzeptierte Antwort

Les Beckham
Les Beckham am 4 Feb. 2025
Perhaps this?
load newca.mat
[~, icol, ~] = unique(abs(newca1).', 'rows', 'stable')
icol = 7×1
1 2 3 4 7 8 12
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
mlag = newca1(:,icol)
mlag = 76×7
0 0 0 0 0 0.1250 0 0 0 0 0 0 0.1111 0 0 0 0 0 0 0.1000 0 0 0.0909 0.0909 0.0909 0.0909 0.0909 0 0 0.1667 0.1667 0.1667 0.0833 0.0833 0 0 0.1538 0.1538 0.2308 0.0769 0.0769 0 0 0.3571 0.0714 0.3571 -0.2143 0.1429 0.2857 0 0.1333 0.0667 0.3333 0 0.3333 0.2667 0 0.1333 0.0667 0.3333 -0.0667 0.3333 0.2667 0 0.1333 0.0667 0.2667 -0.0667 0.3333 0.2667
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>

Weitere Antworten (1)

Steven Lord
Steven Lord am 4 Feb. 2025
Bearbeitet: Steven Lord am 4 Feb. 2025
Make a copy of newca1, let's call it M. Multiply each column of M whose first element is negative by -1. This way if you think of your columns as vectors, they're all pointing "right" (towards +Inf along the x axis, if this were a 2-dimensional problem.) Call unique on M and ask not only for the unique rows but also the indices of the unique rows. Use the indices to extract the corresponding columns of newca1.

Kategorien

Mehr zu MATLAB 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