MATLAB Answers

Is there something like 'array colon'? in other words how can I apply colon operator to all the elements of an array (please read the text below so my question will make sense)?

1 view (last 30 days)
Farzaneh
Farzaneh on 28 Oct 2012
A = [1 10 16 23];
A-3:A+2 will result in [-2,-1,0,1,2,3]; In other words colon operates only on the first element of array A. However I want to apply A-3:A+2 on all the elements of A; I know I can get this by a loop, like :
u=[];for i=1:4, u=[u,A(i)-3:A(i)+2]; end
However I wonder if there is a way to do this without using loop. (The actual array I am working with is too long to loop through it.)
This sounds like a super simple question but I have no ides how to do it in a simple way (other than looping).
I so much appreciate any help.

More Answers (3)

Azzi Abdelmalek
Azzi Abdelmalek on 28 Oct 2012
Edited: Azzi Abdelmalek on 28 Oct 2012
do you mean a division
A = [1 10 15 23];
(A-3)./(A+2 )
  4 Comments

Sign in to comment.


Jan
Jan on 28 Oct 2012
  2 Comments
Matt Fig
Matt Fig on 28 Oct 2012
MCOLON is a mex function that must be compiled. You don't need MCOLON to do what you want to do here anyway. See my solution.

Sign in to comment.


Chris A
Chris A on 28 Oct 2012
Edited: Chris A on 28 Oct 2012
Here is one way to do this:
A = [1 10 16 23];
res=reshape(repmat((-3:2)',1,numel(A))+repmat(A,6,1),[],1);
  1 Comment
Farzaneh
Farzaneh on 28 Oct 2012
Thanks. It is similar to what Matt Fig suggested. however he suggested bsxfun which makes things easier than using repmat...

Sign in to comment.

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!