How to convert the contents of a cell array into specific numbers?

2 views (last 30 days)
Hi guys, I wrote this code to convert the columns 1 and 2 of my cell array into specific numbers as mentioned in the code but no value changed in column 1 and no error is shown even!.
Maybe there is a problem of indexing anyone can help me out plz?
[row_patho, col_patho]=size(Pro_patho_data);
for i=1:1:row_patho
if Pro_patho_data{i,1}>=70
Pro_patho_data{i,1}=11;
end
end
for k=1:1:row_patho
if strcmpi(Pro_patho_data{k,2},'t3b')
Pro_patho_data{k,2}=3;
end
end
Inputs:
73 t2b
59 t1c
58 t3b
78 t3b
wanted_outputs:
11 t2b
59 t1c
58 3
11 3
  2 Comments
Walter Roberson
Walter Roberson on 4 Apr 2018
I suspect that the entries in column 1 are character vectors, not numeric
chocho
chocho on 4 Apr 2018
@Walter Roberson no, entries in column1 are all numeric, except some entries are in the form of '6.40E+01' ...

Sign in to comment.

Answers (2)

Guillaume
Guillaume on 4 Apr 2018
Pro_patho_data = {73, 't2b'; 59, 't1c'; 58, 't3b'; 78, 't3b'}; %demo data
col1 = cell2mat(Pro_patho_data(:, 1));
col1(col1 > 70) = 11;
Pro_patho_data(:, 1) = num2cell(col1);
Pro_patho_data(strcmpi(Pro_patho_data(:, 2), 't3b'), 2) = {3}
  10 Comments
Walter Roberson
Walter Roberson on 4 Apr 2018
%q means to import quote-delimited strings. You would need '%f%s%f%s%f%f%f'
chocho
chocho on 4 Apr 2018
@Walter Roberson, I have updated the format and i tried my code again but nothing changed

Sign in to comment.


Birdman
Birdman on 4 Apr 2018
Edited: Birdman on 4 Apr 2018
Assuming that Inputs is a cell array:
inputs={'73','t2b';'59','t1c';'58','t3b';'78','t3b'}
wanted_outputs=regexprep(inputs,{'\<7\w*','\<t3\w*'},{'11','3'})
  4 Comments
chocho
chocho on 4 Apr 2018
@Birdman friend, I got this error with your code and plz I shared my data can you have a look?
Index exceeds matrix dimensions.
Error in Pathological_data_cleaning (line 31) outputs(:,i)=regexprep(Pro_patho_data(:,i),expr(1,i),expr(2,i))
chocho
chocho on 4 Apr 2018
index exceeds matrix dimensions.
Error in Patho_data_grouping (line 13) outputs(:,i)=regexprep(inputs(:,i),expr(1,i),expr(2,i));

Sign in to comment.

Categories

Find more on Characters and Strings in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!