# How do I replace a value in a matrix at a certain point?

3 views (last 30 days)
Clayton on 14 Oct 2014
Commented: Stephen Cobeldick on 14 Oct 2014
I'm trying to identify where the certain character is in my matrix and replace that character based on user input at that location. I cannot figure out a command that will work but this is what I have so far.
switch (move)
case 'a'
find(world == 'v')
[r,c] = find(world == 'v')
for world = 'v'
world(r,c) = '>'
end
for world = '^'
world(r,c) = '<'
end
for world = '<'
world(r,c) = 'v'
end
for world = '>'
world(r,c) = '^'
end

Guillaume on 14 Oct 2014
I'm afraid the code you show makes no sense at all.
To find something in a matrix, you indeed use find. Once you've found where it is, it's a simple matter of indexing to put a new value there
idx = find(m == searchvalue); %don't use [r,c] if there's going to be more than one found value
m(idx) = newvalue;
Maybe, what you're trying to do is this?
idx = find(world == 'v');
switch(move)
case 'a'
world(idx) = '<';
case 'w'
world(idx) = '^';
case 's'
world(idx) = 'v';
case 'd'
world(idx) = '>';
end
Stephen Cobeldick on 14 Oct 2014
A faster (and often neater) alternative to find is to simply to use logical indexing .