Subtracting Values in a cell with respect to results from nchoosek?

1 view (last 30 days)
Suppose I hav an array a which are basically indices of some values
a = [1 2 3]
b = nchoosek(a,2)
c= size(b)
d = cell(c)
b =
1 2
1 3
2 3
c =
3 2
d =
[] []
[] []
[] []
Now in this cell d, I want to put some values. I have a another cell say newCell (1xn) (here n is always same length as a) which contains double
newCell =
[12737x1 double] [47712x1 double] [6514x1 double]
so i want to have
d = [12737x1 double] [47712x1 double]
[12737x1 double] [6514x1 double]
[47712x1 double] [6514x1 double]
What I want to do in the end is sbutract each values from newCell but with respect to the nchoosek results. Because [12737x1 double] is values for 1
[47712x1 double] is values for 2
[6514x1 double] is values for 3
I am aware we can subtract the values only if the length is same. SO that is where I am stuck. I don no how to go further with this. So I will have to have a if condition for checking if length is same, If it is then it should subtract the values and answer should be zero. If it not same then it should not subtract the values. Say For example:
newCell =
[12737x1 double] [12737x1 double] [6514x1 double]
now d should be
d = [12737x1 double] [12737x1 double]
[12737x1 double] [6514x1 double]
[12737x1 double] [6514x1 double]
It should now check if length is same, then subtract 1st row and store [1 2]in an array keepin in mind that 1 2 are the indices from a. This I want to do for over 150k files. Is there a solution to this. I just have an idea but do not no how to go further with is. Thanks in advance.
  3 Comments
Sim
Sim on 18 Oct 2012
Edited: Sim on 18 Oct 2012
SO the doubles in newCell contain some Values. like: [ 150 180 100 90 25....] I want to subtract each Value of the 1st double pair in newCell. Basically this i am trying t do to check if the length is sam ethen these files are exactly the duplicates. I am trying to somethin like below but not sure if it is the right way:
for j = 1:size(newCell)
if length(newCell{j,1})==length(newCell{j,2})
subValue = newCell{j,2}-nwCell{j,1}
normValue = norm(subValue)
else
NaN
end
end
Does it make sense?
Matt J
Matt J on 18 Oct 2012
I assume you mean d instead of newCell. You should do it as you've written it.

Sign in to comment.

Accepted Answer

Sean de Wolski
Sean de Wolski on 18 Oct 2012
You could use gsubtract if you have the Neural Networks Toolbox. Else just use a for-loop which is what I would recommend doing anyway.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!