作业帮 > 综合 > 作业

matlab中如何把一个向量中的每个元素与元胞数组中的每个元素比较,返回元胞数组里元素在向量中的位置.

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/29 08:23:47
matlab中如何把一个向量中的每个元素与元胞数组中的每个元素比较,返回元胞数组里元素在向量中的位置.

prcoop中每个元胞数组元素在authernum的位置,形成新的与precoop对应的矩阵.矩阵中人名换成了位置信息.需用cellfun函数,需自定义函数.


建立一个文件shiyan1.m,然后用下面的代码测试,不知道你是不是这个意思:
function shiyan1
clc;
global a;
a = { 'ab'; 'cde'; 'fg'; 'hi'; 'kl' };
p = {  'fg;kl;cde'; 'hi;ab' };
p0 = cellfun( @subfun, p, 'UniformOutput', false );

function po = subfun( pi )
global a;
names = regexp( pi, ';', 'split' );% 把几个名字分割开来
l = length( names );
po = '';
for i = 1 : l - 1
    % 搜索pi每个名字在a里的位置
    index = find( cellfun( @( x ) isequal( x, names{ i } ), a, 'UniformOutput', true ) );
    po = [ po, num2str( index ), ';' ];
end
index = find( cellfun( @( x ) isequal( x, names{ l } ), a, 'UniformOutput', true ) );
po = [ po, num2str( index ) ];