Compare rows of a column vector
    5 次查看(过去 30 天)
  
       显示 更早的评论
    
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

5 个评论
  Jan
      
      
 2021-2-16
				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?
回答(2 个)
  Jan
      
      
 2021-2-16
        
      编辑:Jan
      
      
 2021-2-16
  
      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));
7 个评论
  Jan
      
      
 2021-2-17
				Why is 0.4 the most frequent value in [ 0,   0,4   -0,4 ] ? Do you mean [0, 0.4, 0.4] or should the sign be ignored?
If mode() satisfies your needs, using this command would be athe best idea. 
  Rik
      
      
 2021-2-17
        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)
0 个评论
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




