在matlab中查找并替换?

时间:2016-01-17 16:01:49

标签: matlab cell-array

我想在matlab中找到并替换所有内容(正如我们在MS办公室那样)。

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

如果你能找到解决方案。这将是一个很大的帮助。

1 个答案:

答案 0 :(得分: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);