Building a matrix in a faster way
8 views (last 30 days)
Show older comments
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 Comments
Accepted Answer
Matt J
on 16 Oct 2012
d=[0;0;1];
M=d(:,1,ones(1,length(xv)), ones(1,length(yv)))
2 Comments
Walter Roberson
on 16 Oct 2012
Which can also be written as
M = repmat(d, [1, 1, length(xv), length(yv)]);
Matt J
on 16 Oct 2012
Yes, although repmat does use mcode containing loops, and therefore can be slow.
See Also
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!