## How to compute fast?

### Mohammod Minhajur Rahman (view profile)

on 28 Feb 2019
Latest activity Commented on by Mohammod Minhajur Rahman

### Mohammod Minhajur Rahman (view profile)

on 28 Feb 2019
Hi, I have the following code that I need to vectorize to compute faster:
Here,
neq = 3197;
length(K1) = 152;
d1 is such d1{1,i} = 3197 by 1;
delNonZero = 152 by 1;
cd = zeros(neq,neq);
for i = 1:length(K1)
for j = 1:length(K1)
cd =cd+ d1{1,i}*d1{1,j}'*mean([delNonZero(i) delNonZero(j)]);
end
end

Show 1 older comment
Mohammod Minhajur Rahman

### Mohammod Minhajur Rahman (view profile)

on 28 Feb 2019
Hi Bob, I just want it to compute faster. Possibly by eliminating for loops. Sorry for the confusion.
Bob Nbob

### Bob Nbob (view profile)

on 28 Feb 2019
Got it. I am not an expert in those things, so hopefully somebody else can offer you a better solution. I will say that I don't know if you can eliminate the loops because of your desire to look at just a few elements at a time, rather than just looking at entire rows or the like.
Mohammod Minhajur Rahman

### Mohammod Minhajur Rahman (view profile)

on 28 Feb 2019
Hi Bob, thank you for your time. I would wait for a solution while trying by myself.

### Jos (10584) (view profile)

on 28 Feb 2019
Edited by Jos (10584)

### Jos (10584) (view profile)

on 28 Feb 2019

Some suggestions:
• replace mean(A,B) by (A+B)/2
• you can have j run from i to length(K1), since everything seems symmetric (unless there are complex numbers involved):
for i = 1:..
cd = cd + d1{i,1}*d1{i,1}'*delNonZero(i) ;
for j = i+1: ..
cd = cd + 2*d1{i,1}*d1{j,1}'*(delNonZero(i)+delNonZero(j))/2; % you can remove the 2's !!
end
end
• do not use the function CD as avariable name ...