Matlab搜索和计算值

时间:2016-01-30 01:02:43

标签: matlab

我有以下两个矩阵

A=[1 2 3 4 5]
B=[4 5 7 8 9 4 1 2 3 4 5 8 7 9 4 2 1 6 1 2 3 4 5 4 8 9 6 4]

我需要在A中找到B次重复的次数,之后是以下5个值,并放入矩阵。

例如:

A search through B
Ans: C = [ 1 2 3 4 5 
           8 7 9 4 2 
           4 8 9 6 4]
N = 2 % numbers of times 

2 个答案:

答案 0 :(得分:1)

使用findstr来识别序列,它返回序列的索引。其余的东西只是一个索引:

X=findstr(A,B);
Y=arrayfun(@(X)(B(X+numel(A):X+2*numel(A)-1)),X,'uni',false);
C=cat(1,A,Y{:});
N=numel(X);

答案 1 :(得分:1)

这是一种方法,使用bsxfun 三次

%// Data
A = [1 2 3 4 5];
B = [4 5 7 8 9 4 1 2 3 4 5 8 7 9 4 2 1 6 1 2 3 4 5 4 8 9 6 4];
H = 5;

%// Computations:
s = bsxfun(@plus, 0:numel(B)-numel(A), (1:numel(A)).'); %'
ind = find(all(bsxfun(@eq, B(s), A(:)))); %// or im2col(B(:),[numel(A) 1]) instead of B(s)
N = numel(ind);
C = B(bsxfun(@plus, ind(:)+numel(A), 0:H-1));
C = [A; C];

在你的例子中:

>> C
C =
     1     2     3     4     5
     8     7     9     4     2
     4     8     9     6     4
>> N
N =
     2