Effacer les filtres
Effacer les filtres

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

2 vues (au cours des 30 derniers jours)
Clayton
Clayton le 14 Oct 2014
Commenté : Stephen23 le 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.
move = input('Your move?(a,w,d,q)','s');
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

Réponse acceptée

Guillaume
Guillaume le 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
  1 commentaire
Stephen23
Stephen23 le 14 Oct 2014
A faster (and often neater) alternative to find is to simply to use logical indexing .

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Matrix Indexing 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!

Translated by