Replace number with text

25 views (last 30 days)
stelios loizidis
stelios loizidis on 23 Sep 2021
Answered: Walter Roberson on 23 Sep 2021
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 Comment
Chunru
Chunru on 23 Sep 2021
Edited: Chunru on 23 Sep 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.

Sign in to comment.

Accepted Answer

KSSV
KSSV on 23 Sep 2021
Edited: KSSV on 23 Sep 2021
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 ;
  1 Comment
stelios loizidis
stelios loizidis on 23 Sep 2021
It works!!!!
Thanks for the valuable help.

Sign in to comment.

More Answers (1)

Walter Roberson
Walter Roberson on 23 Sep 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'}

Tags

Community Treasure Hunt

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

Start Hunting!