60 views (last 30 days)

Show older comments

Hi all,

Lets say I have 4 x 2 cell matrix A:

1 'text one' 'text two'

2 '5' 'text two'

3 'text one' 'text two'

4 '10' 'text two'

I want the result of a 4 x 2 cell matrix A of all doubles, exept for the last column. The 'text one' has to be replaced by 1 (double):

1 1 'text two'

2 5 'text two'

3 1 'text two'

4 10 'text two'

When I use a for-loop and if-statement I get the error that matrix dimensions must agree. Below is my faulty code:

for i = 1:size(A,1)

if A{i,2} == 'text one'

A{i,2} == 1

else

A{i,2} == str2double(A{i,2})

end

end

Akira Agata
on 8 May 2020

How about the following?

B = replace(A,'text one','1');

B = cellfun(@str2double,B(:,1:end-1),'UniformOutput',false);

A = [B,A(:,end)];

madhan ravi
on 7 May 2020

Edited: madhan ravi
on 7 May 2020

V = str2double(string(A)); % <2016a

V(isnan(V)) = 1

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

Start Hunting!