# Compare rows of a column vector

42 views (last 30 days)
marie lasz on 16 Feb 2021
Answered: Rik on 17 Feb 2021
Hey beautiful people,
I am confused here that i have this vector and i have to compare three values of each row and result should give the most appearing (frequent )value. It is a kind or error correction , in some rows there is one different value and two values are same which I didn't capture. Can some one help me how should i compare each row with three col values? that is how I obtained that by this code.
vec= ones(1024, 1);
ex=[1 1 1];
ex_vec=vec.*ex;
b_w_img--watermarked image
b_img--host image
for k = 1 : numel(b_img)
% diff = b_W_img{k}(4,2) - b_img{k}(4,2);
diff = round((b_W_img{k}(4,2)),1) -round(( b_img{k}(4,2)),1);
ex_vec(k)=diff;
end
Jan on 16 Feb 2021
Do you mean:
ex_vec(k, :) = diff;
% ^
The code
vec= ones(1024, 1);
ex=[1 1 1];
ex_vec=vec.*ex;
can be simplified to:
ex_vec = zeros(1024, 3);
Or do I oversee something?

Jan on 16 Feb 2021
Edited: Jan on 16 Feb 2021
The screenshot show the contents of ex_vec. It does not matter how you have obtained it. All you want to know is how to find rows with less then 3 equal elements. Did I understand this correctly?
not3EqElem = sum(ex_vec == min(ex_vec, [], 1)) < 3;
or
not3EqElem = ~(ex_vec(:, 1) == ex_vec(:, 2) & ex_vec(:, 2) == ex_vec(:, 3));
marie lasz on 17 Feb 2021
yes I meant that [0, 0.4, 0.4]. but don't know how it will read row wise.

Rik on 17 Feb 2021
Just like most functions like it, mode allows you to specify the dimension to operate on:
A= [0, 0.4, 0.4;...
1, 1, 0];
mode(A,2)
ans = 2×1
0.4000 1.0000