Generating a vector with a pattern?
Show older comments
How do I generate the following vector efficiently for large lengths?
A=[1^1 2^2 3^3 4^4 5^5 6^6]
Accepted Answer
More Answers (2)
the cyclist
on 4 Feb 2011
>> v = 1:6;
>> A = v.^v;
Stylistically even better? ;-)
3 Comments
Andrew Newell
on 4 Feb 2011
Definitely!
Walter Roberson
on 4 Feb 2011
Now how would we do tetration, v^^v?
http://en.wikipedia.org/wiki/Tetration
Walter Roberson
on 4 Feb 2011
Nevermind; 4^4^4^4 is the largest that fits within realmax.
Jan
on 4 Feb 2011
This job overflows fast for large lengths and computing 200^200 is a waste of time.
EDITED: With Matt Fig's further improvements:
function x = XpowerX(n)
v = 1:min(n,143);
x = inf(1,n);
x(v) = v.^v;
This much faster than the direct 1:n approach:
tic; for i = 1:15000; y = XpowerX(i); end; toc
% 1.8 sec
tic; for i = 1:15000; v = 1:i; y = v.^v; end; toc
% 60 sec
Categories
Find more on Language Fundamentals 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!