从并排的两列数组中找到typename1或者为typename2的行号,并去重复

49 篇文章 0 订阅
17 篇文章 2 订阅
 
function type_pos = get_type_pos(array1, array2, typename1, typename2)
%Author:shizhixin  
%Email:szhixin@gmail.com  
%Blog:http://blog.csdn.net/shizhixin  
%Date:2012-02-29
%function:从并排的两列数组中找到typename1或者为typename2的行号,并去重复
%Note:array1和array2的维数必须一致,否则type_pos返回0

%example: 
% array1 =  {'SL';'SL';'G'; 'SL'; 'GAL'; 'SL';}
% array2 ={'G';'-';'-';'-';'-';'-';}
% typename1 = 'G'
% typename2='GAL'
% type_pos = get_type_pos(array1, array2, typename1, typename2)%type_pos =1 3 5
% typename1 = 'G'
% typename2='G'
% type_pos = get_type_pos(array1, array2, typename1, typename2)%type_pos =1 3

if length(array1)~=length(array2)
    disp 'error! array1 and array2 must be the same dim!'
    type_pos = 0;
    return
end

pos_11 = find_str_pos(array1, typename1);
pos_12 = find_str_pos(array1, typename2);
pos_21 = find_str_pos(array2, typename1);
pos_22 = find_str_pos(array2, typename2);
type_pos = unique([pos_11 pos_12 pos_21 pos_22]);%去掉重复值

end

%----------------------------------------------------
function str_pos = find_str_pos(array_cell, str)
%从一维CELL数组array_cell中找到指定str的位置
%array_cell={'SL';'G';'SL';'-';'GL';}
% pos = find_str_pos(array_cell, 'G')% pos = 2

str_pos = [];
len = length(array_cell);
for i=1:len
    tempstr = array_cell{i};
    if strcmp(tempstr, str)
        str_pos = [str_pos i];
    end
end
end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值