How to perform single cell array pairwise difference?
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello everyone! I am working on cell array of size X x Y where X and Y will be variable and depends on the size of input image. Lets consider a case where X = 16 and Y = 16. I have one cell array variable and in each cell i have 1001 rows with first column simulation time and second column data. What i want is the following: I have to perform difference of two consecutive cells and store result in new cell. This new cell should have a sequence of differences.
Example:
New_Cell_Array{1,1} = Old_Cell_Array{1,1} - Old_Cell_Array{2,1};
New_Cell_Array{2,1} = Old_Cell_Array{3,1} - Old_Cell_Array{4,1};
and so on..
New_Cell_Array{X/2,1} = Old_Cell_Array{X-1,1} - Old_Cell_Array{X,1};
New_Cell_Array{X/2+1,1} = Old_Cell_Array{2,1} - Old_Cell_Array{3,1};
New_Cell_Array{X/2+2,1} = Old_Cell_Array{4,1} - Old_Cell_Array{5,1};
and so on..
New_Cell_Array{X-1,1} = Old_Cell_Array{14,1} - Old_Cell_Array{15,1};
Is there any way to perform this kind of operation on cell array. Thanks in advance.
3 commentaires
Guillaume
le 1 Nov 2014
You wrote ' Lets consider a case where X = 16 and Y = 16', yet your example only shows what happens in the first column. What happens in the other columns? The same?
Réponse acceptée
Guillaume
le 1 Nov 2014
As per isakson's comment, it's fairly straightforward to do with a for loop.
You could also do it with cellfun, but be aware that due to the anonymous function call, it may not be faster than the explicit loop:
new_cell_array = cellfun(@(c1, c2) c1-c2, old_cell_array(1:2:end, :), old_cell_array(2:2:end, :), 'UniformOutput', false);
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Multidimensional Arrays dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!