Effacer les filtres
Effacer les filtres

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

2 vues (au cours des 30 derniers jours)
chocho
chocho le 4 Avr 2018
Commenté : chocho le 4 Avr 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 commentaires
Walter Roberson
Walter Roberson le 4 Avr 2018
I suspect that the entries in column 1 are character vectors, not numeric
chocho
chocho le 4 Avr 2018
@Walter Roberson no, entries in column1 are all numeric, except some entries are in the form of '6.40E+01' ...

Connectez-vous pour commenter.

Réponses (2)

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

Connectez-vous pour commenter.


Birdman
Birdman le 4 Avr 2018
Modifié(e) : Birdman le 4 Avr 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 commentaires
chocho
chocho le 4 Avr 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 le 4 Avr 2018
index exceeds matrix dimensions.
Error in Patho_data_grouping (line 13) outputs(:,i)=regexprep(inputs(:,i),expr(1,i),expr(2,i));

Connectez-vous pour commenter.

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by