Building a matrix in a faster way
조회 수: 8 (최근 30일)
이전 댓글 표시
Hi,
I am trying to build a matrix by giving each array in the matrix the same value in its first column. The value is [0;0;1]. My code look something like this:
yv = 1:-1:-1;
xv = -1:1:1;
for Y = 1:length(yv)
for X = 1:length(xv)
M(:,1,X,Y) = [0;0;1];
end
end
I was wondering if there is more efficient way to give the arrays for length (yv) and (xv) the value [0;0;1] instantly without using the for loop. My matrix in original is much larger than this and I need to make the code as faster to execute the data as possible.
Highly appreciate any help with this.
Best wishes
AA
댓글 수: 0
채택된 답변
Matt J
2012년 10월 16일
d=[0;0;1];
M=d(:,1,ones(1,length(xv)), ones(1,length(yv)))
댓글 수: 2
Walter Roberson
2012년 10월 16일
Which can also be written as
M = repmat(d, [1, 1, length(xv), length(yv)]);
Matt J
2012년 10월 16일
Yes, although repmat does use mcode containing loops, and therefore can be slow.
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!