如何比较不同大小的 A,B 矩阵,必须逐个比较逐个元素并获得 A 的相应索引或 C 矩阵中的 B 。
A = {2 4 1};
B = {8 7 2 5 4 6};
输出:C = {1 2}; 或 C = {3 6};这里与我提出的问题相同:
for i=1:s
for j=s+1:nGen
if(tOS(p,i)==tOS(p,j))
f1=f1+1;
ti(1,f1)=i;
end
if(tOS(p+1,i)==tOS(p+1,j))
f2=f2+1;
ti(2,f2)=i;
end
end
end
但我正在寻找Matlab中更短和优化的bult-in函数
答案 0 :(得分:0)
我假设您要将矩阵A
的每个元素与每个元素矩阵B
进行比较(您的问题不明确)。
您可以使用bsxfun
完成此操作。比较A
({1}}和B
的{{3}}(列向量)版本,然后重新整形结果会更容易:
A = randi(5, 3,2); %// example A, size 3x2
B = randi(5, 2,4); %// example B, size 2x4
C = reshape(bsxfun(@eq, A(:), B(:).'), [size(A) size(B)]);
这将C
作为4D阵列(在示例中大小为3x2x2x4)。如果C(m,n,p,q)
等于1
,则条目A(m,n)
为B(p,q)
,否则为0
。