How to concatenate -x:x for x=0,1,2,3,..n without a loop?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
ailbeildce
am 3 Nov. 2017
Kommentiert: Walter Roberson
am 4 Nov. 2017
Hi,
I want to populate a matrix with rows in the form of
0,-1,0,1,-2,-1,0,1,2,-3,-2,-1,0,1,2,3
0,-1,0,1,-2,-1,0,1,2,-3,-2,-1,0,1,2,3
0,-1,0,1,-2,-1,0,1,2,-3,-2,-1,0,1,2,3
... ie -x:x for multiple x values. After this, I will call a function on the whole matrix to convert these numbers to something else. eg takesquare(Matrix) will give the elementwise squares of 0,-1,0,1,...
1. How to concatenate -x:x for x=0,1,2,3,..n without a loop? With a loop, solution is trivial and super slow.
2. How can I call the takesquare with additional parameters? So the idea is adding different values to each row, ie takesquare(Matrix, [column vector=2,0,7,1,5,6..]). I know bsxfun can be used, but since the operations should be elementwise, I'll need to repmat the columnvector to all entries then. Is there a better/less memory occupying way?
Thanks!
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 4 Nov. 2017
Bearbeitet: Walter Roberson
am 4 Nov. 2017
Constructing it as a vector is possible in theory.
The value range -N to +N is in the (N+1)'th group and is a vector of length (2*N+1). The total length of the vector to the end of the -N:+N group can be found to be (N+1)^2 . Therefore for any given position, M, floor(sqrt(M-1)-1) tells you how many complete N have been gone through, and M minus that gives you the relative position in progress:
Nb = floor(sqrt(M-1)-1);
value_at_M = M - (Nb+1).^2 - 1 + -(Nb+1);
For any given final N, Nf, you can run that vectorized:
M = 1 : (Nf+1).^2;
Nb = floor(sqrt(M-1)-1);
value_at_M = M - (Nb+1).^2 - 1 + -(Nb+1);
"2. How can I call the takesquare with additional parameters? So the idea is adding different values to each row"
You only have one row.
2 Kommentare
Walter Roberson
am 4 Nov. 2017
arrayfun(@fn, FirstArray, SecondArray, ThirdArray, FourthArray)
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements 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!