Generating a vector with a pattern?
Afficher commentaires plus anciens
How do I generate the following vector efficiently for large lengths?
A=[1^1 2^2 3^3 4^4 5^5 6^6]
Réponse acceptée
Plus de réponses (2)
the cyclist
le 4 Fév 2011
>> v = 1:6;
>> A = v.^v;
Stylistically even better? ;-)
3 commentaires
Andrew Newell
le 4 Fév 2011
Definitely!
Walter Roberson
le 4 Fév 2011
Now how would we do tetration, v^^v?
http://en.wikipedia.org/wiki/Tetration
Walter Roberson
le 4 Fév 2011
Nevermind; 4^4^4^4 is the largest that fits within realmax.
Jan
le 4 Fév 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
Catégories
En savoir plus sur Language Fundamentals dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!