2016-01-17 2 views
0

Я хочу найти и заменить все в matlab (как и в офисе MS).Найти и заменить в Matlab?

https://www.dropbox.com/s/hxfqunjwhnvkl1f/matlab.mat?dl=0

У меня есть массив ячеек LUT_HS_complete (содержит идентификатор в столбце 1 и имя белка в колонке 2 и резюме в колонке 3) это мой взгляд таблица. с другой стороны, у меня есть данные о взаимодействии белок-белок (с именем Second_layer с идентификаторами в первых двух столбцах и оценка в столбце 3).

Я хочу заменить первые две колонки в моем Second_layer с соответствующим именем белка из таблицы поиска.

Я пробовал strmatch, но это меня не помогло.

Source_gene = Second_layer(:,1); Source_gene = regexprep(Source_gene,'[-/\s]',''); 
Target_gene = Second_layer(:,2); Target_gene = regexprep(Target_gene,'[-/\s]',''); 
Inter_score = Second_layer(:,3); 

%% 
for i=1:length(Source_gene(1:end,1)); 
    SG = strmatch(Source_gene(i),LUT_HS_complete(1:end,1),'exact'); 
    renamed_Source_gene(SG,1) = LUT_HS_complete(SG,2); 
end 

for j=1:length(Target_gene(1:end,1)); 
    TG = strmatch(Target_gene(j),LUT_HS_complete(1:end,1),'exact'); 
    renamed_Target_gene(TG,1) = LUT_HS_complete(TG,2); 
end 

Если бы у вас было желание найти решение. Это было бы большой помощью.

ответ

2

Возможно, эта работа для вас?

renamed_Second_layer(:,1)=LUT_HS_complete(cellfun(@(x) find(strcmp(x,LUT_HS_complete(:,1))),Second_layer(:,1)),2); 
renamed_Second_layer(:,2)=LUT_HS_complete(cellfun(@(x) find(strcmp(x,LUT_HS_complete(:,1))),Second_layer(:,2)),2); 
renamed_Second_layer(:,3)=Second_layer(:,3); 
+0

Это работало как шарм. огромное спасибо –

Смежные вопросы