Hello, I have the following problem. I have a matrix A which has dimensions of 300x350. In this matrix I want to replace the value 5 with the phrase "NO". I wrote a small code but it does not replace. I attach the code.
% finding positions of number 5 from table A.
[i1,k1]=find(A==5);
% Replace value 5 with text "NO"
for i=1:length(i1)
for j=1:length(k1)
if A==5
A(i1(i),k1(j))=disp('NO');
end
end
end
Your help is invaluable.

1 comentario

Chunru
Chunru el 23 de Sept. de 2021
Editada: Chunru el 23 de Sept. de 2021
Matrix or array in matlab must have the same data type. You can not mix the double data with a string 'NO' in same matrix.

Iniciar sesión para comentar.

 Respuesta aceptada

KSSV
KSSV el 23 de Sept. de 2021
Editada: KSSV el 23 de Sept. de 2021

0 votos

Instead of a string, you can try replacing it with NaN.
% finding positions of number 5 from table A.
[i1,k1]=find(A==5);
% Replace value 5 with text "NO"
for i=1:length(i1)
for j=1:length(k1)
if A==5
A(i1(i),k1(j))=NaN ;
end
end
end
Also you need not tuse a loop.
idx = A == 5 ;
A(idx) = NaN ;

Más respuestas (1)

Walter Roberson
Walter Roberson el 23 de Sept. de 2021
Adjust to suit
A = magic(7);
newA = num2cell(A);
mask = mod(A,5) == 0;
newA(mask) = {'NO'};
newA
newA = 7×7 cell array
{'NO'} {[39]} {[48]} {[ 1]} {'NO'} {[19]} {[28]} {[38]} {[47]} {[ 7]} {[ 9]} {[18]} {[27]} {[29]} {[46]} {[ 6]} {[ 8]} {[17]} {[26]} {'NO'} {[37]} {'NO'} {[14]} {[16]} {'NO'} {[34]} {[36]} {'NO'} {[13]} {'NO'} {[24]} {[33]} {[42]} {[44]} {[ 4]} {[21]} {[23]} {[32]} {[41]} {[43]} {[ 3]} {[12]} {[22]} {[31]} {'NO'} {[49]} {[ 2]} {[11]} {'NO'}

Categorías

Más información sobre Data Type Conversion en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 23 de Sept. de 2021

Respondida:

el 23 de Sept. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by