how to take the exact coordinates of non zero values of a matrix
    1 次查看(过去 30 天)
  
       显示 更早的评论
    
I'm trying to take the non zero values of gaussian spots that i generate random. I round my table but I don't take the exact coordinates I think. Could anybody help me with this? Here is my code in which I save the nonzero coordinates.
    function[n_min,n_max,max_val,spot,x1,y1,n_z]=generate_spot_7(i,sigma_x,sigma_y,x0,y0,n,min_n,max_n)
    new_min=min_n/255;
  new_max=max_n/255;
   n_min=new_min+(new_max-new_min).*rand;
   n_max=(n_min)+(new_max-n_min).*rand;
   Z=0;
   t=0;
   theta=0+i*pi/500;;%allazoume tixaia tis esties ton elipseon
    a = cos(theta)^2/2/sigma_x^2 + sin(theta)^2/2/sigma_y^2;
  %b=0;
  b = -sin(2*theta)/4/sigma_x^2 + sin(2*theta)/4/sigma_y^2 ;
  c = sin(theta)^2/2/sigma_x^2 + cos(theta)^2/2/sigma_y^2;
  %%%c=1;
  [X, Y] = meshgrid(-(n+2*4):.13:(n+2*4), -(n+2*4):.13:(n+2*4));
  t=exp( - (a*(X-x0).^2 + 2*b*(X-x0).*(Y-y0) + c*(Y-y0).^2));
  MAX=max(t);
  o=round(t*100000)/100000;%epeidi einai double kano strogilopoiisi g na paro 
  n_z=find(o~=(0));
  [x1,y1] = ind2sub(size(o),find(o~=0))
  s=[n,n];
  %[x1,y1] = ind2sub(s,n_z)
  max_val=max(MAX);
  spot=t;
I observe that when I add the generated spots and i'm going to zero the values of some spots, I zero more pixels than those I want to zero.
0 个评论
回答(1 个)
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Mathematics and Optimization 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!