Avoid using repmat in CPD registration algorithm

Hi all,
I'm running a coherent point drift (CPD) registration algorithm and I'm having trouble running it on large point clouds because I keep exceeding the maximum variable size. The line of code that is giving me trouble is:
G=repmat(x,[1 1 m])-permute(repmat(y,[1 1 n]),[3 2 1]);
The error message is:
??? Maximum variable size allowed by the program is exceeded.
Error in ==> repmat at 104
B = A(subs{:});
I'm wondering if anyone has any suggestions as how to avoid using repmat so I can run the code on large data sets.
Thanks!

댓글 수: 2

Matt J
Matt J 2012년 10월 24일
Perhaps. What are the dimensions of x and y?
Mark
Mark 2012년 10월 24일
편집: Mark 2012년 10월 24일
I'm not exactly sure as there can be significant deviation in the point clouds. Let's say the largest X will be is 70000 x 3 and the largest Y will be is 4000 x 3.

댓글을 달려면 로그인하십시오.

 채택된 답변

Sean de Wolski
Sean de Wolski 2012년 10월 24일

0 개 추천

bsxfun should be able to handle that.
Also, rather than using permute use reshape, permute is slow for big things.
G = bsxfun(@minus,x,reshape(y',1,3,[]))

댓글 수: 1

Mark
Mark 2012년 10월 24일
Thanks for the suggestion Sean. I'll try it out and let you know if it works!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

질문:

2012년 10월 24일

Community Treasure Hunt

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

Start Hunting!

Translated by