2
$\begingroup$

Let's say I have a $n$x$m$ matrix $M$ in Matlab and I want to substitute the elements of $M$ that exceed $15$ for $-1$. In Matlab I just write

M(M>15)=-1 

and I'm done.

I have been struggling to do this in Mathematica. Does Mathematica have an equivalent way to do this?

Something that is easy to remember and that takes few lines will be appreciated

Thank you

$\endgroup$
0

1 Answer 1

1
$\begingroup$
mat = {{10, 20, 3}, {22, 1, -5}, {6, 15, 16}}; MatrixForm[mat] 

Mathematica graphics

mat = ReplacePart[mat, Position[mat, _?(#1 > 15 &)] -> -1]; MatrixForm[mat] 

Mathematica graphics

To answer follow up:

but what about if I want to replace those numbers that are greater than 15, smaller than 23 and are prime.

You can set the condition as you wanted, then use it:

mat = {{10, 20, 19}, {22, 18, 99}, {20, 17, 16}}; MatrixForm[mat] 

Mathematica graphics

cond = (15 < #1 < 23 && PrimeQ[#1]) &; mat = ReplacePart[mat, Position[mat, _?cond] -> -1]; MatrixForm[mat] 

Mathematica graphics

There are other ways to do this. So, just pick one good pattern that you like and can remember and stick to it.

$\endgroup$
3
  • $\begingroup$ Variations: Replace[mat, _?(# > 15 &) -> -1], mat /. _?(# > 15 &) -> -1. $\endgroup$ Commented Oct 12, 2013 at 19:16
  • $\begingroup$ Thank you, but what about if I want to replace those numbers that are greater than 15, smaller than 23 and are prime. Is there a place where I can be adding these conditions? $\endgroup$ Commented Oct 12, 2013 at 19:29
  • $\begingroup$ @NunoCalaim please see update $\endgroup$ Commented Oct 12, 2013 at 19:56

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.