Finding differences between two vectors in an explicit way.
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Jenna Wong
am 27 Okt. 2019
Kommentiert: Jenna Wong
am 27 Okt. 2019
I am trying to compare two vectors, let's say
vec1 = [5 4 2 1 3 1 1 1 4];
vec2 = [5 4 2 5 3 2 1 2 2];
As you can see, they differ in indices 4, 6, 8, 9. I would like to determine how they differ, so that I get the following information:
The number 1 from vec1 is classified as a 5 in vec2 one time.
The number 1 from vec1 is classified as a 2 in vec2 two times.
The number 4 from vec1 is classified as a 2 in vec2 one time.
I would like to get it as a numerical result so that it is easier to work with, e.g.:
[1 5 1
1 2 2
4 2 1];
These vectors will be very long. Is there a fast way to go about this? Thank you all!
2 Kommentare
Ajay Kumar
am 27 Okt. 2019
Are there only single digit values in vec1 and vec2?
If not how are double and tripe digits are differed from vec1 and vec 2?
for example: how is 111 referred as? 555?
Akzeptierte Antwort
the cyclist
am 27 Okt. 2019
Bearbeitet: the cyclist
am 27 Okt. 2019
% Input vectors
vec1 = [5 4 2 1 3 1 1 1 4];
vec2 = [5 4 2 5 3 2 1 2 2];
% Identify the mismatched rows, and create a matrix of them
idx = vec1~=vec2;
mismatchedRows = [vec1(idx); vec2(idx)]';
% Find the *unique* mismatched rows, and the indices from the unique ones
% back to the original ones
[uniqueMismatchedRows,~,indexBacktoOriginal] = unique(mismatchedRows,'row','stable');
% Count the number of occurrences of each mismatch row
count = histcounts(indexBacktoOriginal,[unique(indexBacktoOriginal); Inf]);
% Put it all together for the output
output = [uniqueMismatchedRows count'];
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Classification finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!