need repmat help

1 view (last 30 days)
Dan
Dan on 19 Sep 2011
Hello,
I have a 4D array with two for loops that is very slow. I know repmat is a good tool to speed things up but I am not very good at using it yet. Is there a way to use repmat to replace the follow set of for loops:
%th_diff3_1 has the following dimensions (621,1405,12,116)
for a = 1:621
for b = 1:1405
x = sum(th_diff3_1(a,b,:,:));
x = sum(x(1,1,:,:));
percent3_1(a,b) = (x/1390) * 100;
end
end
Please help me understand repmat!
Thanks,
Dan

Accepted Answer

Fangjun Jiang
Fangjun Jiang on 19 Sep 2011
It's not about repmat. I think you can do this:
x=sum(th_diff3_1,4);
x=sum(x,3);
percent3_1=(x/1390) * 100
  4 Comments
Jan
Jan on 19 Sep 2011
@Fangjun: Thanks, but I do not _know_ such details. I just try it taking into account that the calculations are performed by a processor. I've learned programming when efficiency was really important: on a ZX81 with 1kB RAM. It was possible to read the complete operating system in two afternoons.
Although Matlab has a higher complexity, the fundamental rules for efficiency did not change: Keep the data compact to avoid unneded operations.
Dan
Dan on 20 Sep 2011
Fangjun and Jan, thanks so much. I realize now this is not a repmat problem, I just have for loops engrained in my head and need to think differently!

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!