Entering a vector in a function with if else statement
    5 views (last 30 days)
  
       Show older comments
    
Hi Matlab community.
I made this function that should sort out data that differs more than +/- 20 % giving it "NaN" if it does. If the previous measurement varied more than 20 % it should should not do so, which i tried with the command: "(sorted_data(i-1)==NaN) && (i>1)" but when I use the debugger it does not enter this statement even though it is true. How come it won't enter this? Thanks for the help!
Kind Regards
function sorted_data=sort_for_outliers(data)
sorted_data=zeros(length(data),1);
for i=1:length(data)
    if i==1
        sorted_data(i)=[data(i)];
      elseif (sorted_data(i-1)==NaN) && (i>1)
          sorted_data(i)=[data(i)];
      elseif data(i)>1.20.*data(i-1)
          sorted_data(i)=[NaN];
      elseif data(i)<0.80.*data(i-1)
          sorted_data(i)=[NaN];
      else
          sorted_data(i)=[data(i)];
      end
  end
  end
1 Comment
  Torsten
      
      
 on 12 Mar 2018
				At the beginning of your function, you set "sorted_data" to zero. Thus sorted_data(i-1) will not be NaN.
Best wishes
Torsten.
See Also
Categories
				Find more on Shifting and Sorting Matrices in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

