Why changes my string into a double in a for loop

Hello!
When I want to change a cell in a matrix with the original value NULL into 'C', the 'C' turns into the value 67. This is my code:
for j=1:99
percentage2 = j/99
mDataTest(m,1) = str2double(data{1}{j});
mDataTest(m,2) = 0;
for i = 3:50
percentage1 = j/50
if(strcmp(data{i}{j},''))
mDataTest(m,i) = 'C';
elseif(strcmp(data{i}{j},'NULL'))
mDataTest(m,i) = 'C' ;
else
mDataTest(m,i) = str2double(data{i}{j}); %make matrix with data
end
end
m=m+1;
n=3;
end
Where data is a matrix filled with strings and numeric values. The goal of this is to change all values that are '' or 'NULL' into a string. Eventually I want to replace all 'C' with the median of that vector. Can someone help me?

 Akzeptierte Antwort

Matt J
Matt J am 3 Jul. 2018
Bearbeitet: Matt J am 3 Jul. 2018

0 Stimmen

If you don't want mDataTest to be double, then don't use str2double when you create it.

4 Kommentare

I only want to change the NULL and the '' into 'C' but the rest can change into a double. Is my function correct?
It is not possible to assign both numeric and characters to the same array except by using cell array.
Matt J
Matt J am 3 Jul. 2018
Bearbeitet: Matt J am 3 Jul. 2018
This might be what you want. As Walter says, mDataTest must be kept as type cell array.
for j=1:99
percentage2 = j/99
mDataTest{m,2} = 0;
for i = 3:50
percentage1 = j/50
if(strcmp(data{i}{j},'') || strcmp(data{i}{j},'NULL'))
mDataTest{m,i} = 'C';
else
mDataTest{m,i} = str2double(data{i}{j});
end
end
m=m+1;
n=3;
end
It works! Thank you very much!!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Characters and Strings finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2015b

Community Treasure Hunt

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

Start Hunting!

Translated by