How to concatenate -x:x for x=0,1,2,3,..n without a loop?
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
ailbeildce
le 3 Nov 2017
Commenté : Walter Roberson
le 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 commentaires
Réponse acceptée
Walter Roberson
le 4 Nov 2017
Modifié(e) : Walter Roberson
le 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 commentaires
Walter Roberson
le 4 Nov 2017
arrayfun(@fn, FirstArray, SecondArray, ThirdArray, FourthArray)
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!