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

1 Ansicht (letzte 30 Tage)
chocho
chocho am 4 Apr. 2018
Kommentiert: chocho am 4 Apr. 2018
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 Kommentare
Walter Roberson
Walter Roberson am 4 Apr. 2018
I suspect that the entries in column 1 are character vectors, not numeric
chocho
chocho am 4 Apr. 2018
@Walter Roberson no, entries in column1 are all numeric, except some entries are in the form of '6.40E+01' ...

Melden Sie sich an, um zu kommentieren.

Antworten (2)

Guillaume
Guillaume am 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 Kommentare
Walter Roberson
Walter Roberson am 4 Apr. 2018
%q means to import quote-delimited strings. You would need '%f%s%f%s%f%f%f'
chocho
chocho am 4 Apr. 2018
@Walter Roberson, I have updated the format and i tried my code again but nothing changed

Melden Sie sich an, um zu kommentieren.


Birdman
Birdman am 4 Apr. 2018
Bearbeitet: Birdman am 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 Kommentare
chocho
chocho am 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 am 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));

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by