Elementwise diff() with an condition
    13 views (last 30 days)
  
       Show older comments
    
I have an array of cells which contains numeric arrays of different lengths, lets call that array X. I want to write a function that writes the diff(cell2mat(X(i))) to and array of cells Y(i). The problem is when I want to add a condition i.e. only write the diff of two elements in the result vector when the difference is <= B. Below my code:
 function[Y] = diffleq2(X)
 len = length(X);
 for i = 1:len
     Y(i) = {diff(cell2mat(X(i)))};
 end
X is of the form of
 X = {[1,2,4,5],[23,12,13]};
just with a lot more cells. Obviously the new function would look like this
 function[Y] = diffleq2(X,B)
0 Comments
Accepted Answer
  ChristianW
      
 on 13 Mar 2013
        X = {[1,2,4,5],[23,12,13]};
Y = cellfun(@diff,X,'un',0);
B = 1.5;
Ycut = cellfun(@(x) x(abs(x)>B),Y,'un',0);
More Answers (1)
  Azzi Abdelmalek
      
      
 on 13 Mar 2013
        
      Edited: Azzi Abdelmalek
      
      
 on 13 Mar 2013
  
      X = {[1,2,4,5],[23,12,13]}
B=1
for k=1:numel(X)
  b=diff(X{k})
  b(b>B)=[]
  out{k}=b
end
0 Comments
See Also
Categories
				Find more on Operators and Elementary Operations in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

