Мне нужно сравнить два символьных массива и сделать их абсолютно одинаковыми. В то же время мне нужны координаты символов, которые я сохранил.
Например, у меня есть два массива символов
A=['a';'b';'b';'b';'c';'d'];
B=['a';'b';'b';'d'];
Я хочу, чтобы результат был
Anew=['a';'b';'b';'d'];
Bnew=['a';'b';'b';'d'];
и я хочу узнать позиции
APos=[1;2;3;6];
BPos=[1;2;3;4];
Чтобы
Anew=A(APos);
Bnew=B(BPos);
Я попробовал следующий код
[lmod1,lmod2]=size(A);
[lobs1,lobs2]=size(B);
PosB=zeros(lobs1,1);
for i=1:lobs1
for j=1:lmod1
if B(i,:)==A(j,:)
PosB(i,:)=i; %collect the ones that are in there, the zeros should then be the ones that are not
end
end
end
PosB2=PosB(PosB~=0);
PosA=zeros(lmod1,1);
for i=1:lmod1
for j=1:lobs1
if A(i,:)==B(j,:)% if this is true at the end of the loop, it means that the value of namesobs is in namesw
PosA(i,:)=i; %collect the ones that are in there, the zeros should then be the ones that are not
end
end
end
PosA2=PosA(PosA~=0);
Но это только проверка на наличие , не если значения повторяются разное количество раз. Как добавить дополнительный фильтр, чтобы строки повторялись одинаковое количество раз в обоих строковых массивах?
К вашему сведению, строки, с которыми я работаю, выглядят так:
>> ODates(1:10,:)
ans =
10×12 char array
'20100202_186'
'20100202_186'
'20100202_190'
'20100202_190'
'20100202_190'
'20100202_190'
'20100202_190'
'20100202_191'
'20100202_191'
'20100202_191'
EDates (1:10,:)
ans =
10×12 char array
'20100202_186'
'20100202_190'
'20100202_190'
'20100202_190'
'20100202_190'
И тогда ответ будет:
NewDates (1 : 10,:)
ans =
10×12 char array
'20100202_186'
'20100202_190'
'20100202_190'
'20100202_190'
'20100202_190'