Generating a vector with a pattern?
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
How do I generate the following vector efficiently for large lengths?
A=[1^1 2^2 3^3 4^4 5^5 6^6]
0 Kommentare
Akzeptierte Antwort
Vieniava
am 4 Feb. 2011
check this out:
A=[1:6].^[1:6];
1 Kommentar
Andrew Newell
am 4 Feb. 2011
Stylistically better is
A = (1:6).^(1:6);
because brackets are used to construct arrays and 1:6 already is an array.
Weitere Antworten (2)
the cyclist
am 4 Feb. 2011
>> v = 1:6;
>> A = v.^v;
Stylistically even better? ;-)
3 Kommentare
Walter Roberson
am 4 Feb. 2011
Now how would we do tetration, v^^v?
http://en.wikipedia.org/wiki/Tetration
Jan
am 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
2 Kommentare
Siehe auch
Kategorien
Mehr zu Language Fundamentals finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!