10 views (last 30 days)

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)];

Akira Agata
on 8 May 2020

Could you upload your original cell arrya A?

I have assumed as follows and my code works agains it.

A = {...

'text one', 'text two';

'5', 'text two';

'text one', 'text two';

'10', 'text two'};

madhan ravi
on 7 May 2020

Edited: madhan ravi
on 7 May 2020

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

V(isnan(V)) = 1

madhan ravi
on 8 May 2020

Dude when did you edit your question? For sure you edited it after I answered!

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.