为什么会员在我的Matlab程序中无法正常工作?

时间:2017-03-03 17:01:22

标签: matlab assign

在我的程序的这一部分中,我想将 ID 变量分配给 RealTagID 变量。然后在第二部分中,我尝试将 ID 变量分配给 RealTagID_NEW 。 ID变量来自我的测量数据,我在下面上传了它(它来自EPC)。因为Matlab 9B和BB在第一部分由于某种原因是相同的,所以它没有按照我想要的方式工作......

这是我的代码:

 close all
clc

RealTagID=['A3 ' ;'A1 ' ; '9F '  ;'9D ' ; '9B ' ; 'A9 '  ; 'A7 ' ; 'A5 ' ];
%The last two characters of the EPC code of the tags
RealPOSX=[40 31 0 -31 -40 -32 0 +31]; 
%The x positions of fixed tags
RealPosY=[0 27 40 27 0 -27 -40 -27];
% The y positions of fixed tags

for i=1:length(XLocalization)
    temp=Epc{i};
    ID(i,:)=temp(end-2:end);
    %Makes a new variable, called 'ID', which is the last two characters from
    %the measured EPC codes
end

for i =1  :length(RealPOSX)

    idx = all(ismember(ID,RealTagID(i,:)),2)
    pos=find(idx==1);
    POS{i}=pos;
end
%-------------------------------------------------------------------------------------------------------------------------------

RealPOSX_NEW=[20 17 0 -17 -20 -17 0 17]; 
%The x positions of fixed tags
RealPosY_NEW=[0 12 20 12 0 -12 -20 -12];
% The y positions of fixed tags
RealTagID_NEW=['B3 ' ;'B5 ' ; 'B7 '  ;'BB ' ; 'AD ' ; 'AB '  ; 'AF ' ; 'B1 ' ];
%The last two characters of the EPC code of the tags

for i =1  :length(RealPOSX_NEW)
    idxx = all(ismember(ID,RealTagID_NEW(i,:)),2)
    poss=find(idxx==1);
    POSS{i}=poss;


end

在第二部分,它甚至值得。对于那种情况下的matlab,B1与BB相等,B3与BB,B5与BB,B7与BB和AB与BB相等。

我想比较它们,如果它们是相同的,那么让它成为逻辑1,如果不是那么0.但是它没有那样工作,因为这个BB变量或我没有&#39不知道。

我使用了ismember功能,但它似乎不是最好的选择。任何的想法?我该怎么用?

所以我的目标是使POS和POSS变量相等,这意味着所有这些变量应该是1x8个单元格,并且每个单元格有58个元素。现在它们中的一些有116个,因为在那种情况下,matlab BB也与9B,B1,B3,B5,B7,B9相等。所以它不是那么好,BB应该与BB相等而不是与其他变量相同。

这是我的衡量标准Measurement

我希望你能帮助我,我一整天都没有进步。

1 个答案:

答案 0 :(得分:0)

最后我用strfind解决了这个问题。 这是我的代码,它运作得很好。

close all
clc
RealPOSX=[40 31 1 -31 -40 -32 1 +31]; 
%The x positions of fixed tags
RealPosY=[1 27 40 27 1 -27 -40 -27];
% The y positions of fixed tags
RealTagID=['A3 ' ;'A1 ' ; '9F '  ;'9D ' ; '9B ' ; 'A9 '  ; 'A7 ' ; 'A5 ' ];

for i=1:length(XLocalization)
    temp=Epc{i};
    ID(i,:)=temp(end-2:end);

end



for i =1  :length(RealPOSX)        
    idx = strfind(string(ID), RealTagID(i,:))

    pos= find(not(cellfun('isempty', idx)))
    POS{i}=pos;
   end

%-------------------------------------------------------------------------------------------------------------------------------

RealPOSX_NEW=[20 17 0 -17 -20 -17 0 17]; 
%The x positions of fixed tags
RealPosY_NEW=[0 12 20 12 0 -12 -20 -12];
% The y positions of fixed tags
RealTagID_NEW=['B3 ' ;'B5 ' ; 'B7 '  ;'BB ' ; 'AD ' ; 'AB '  ; 'AF ' ; 'B1 ' ];
%The last two characters of the EPC code of the tags

for i =1  :length(RealPOSX)
    %idxx = all(ismember(ID,RealTagID_NEW(i,:)),2)
    %poss=find(idxx==1);
    idxx = strfind(string(ID), RealTagID_NEW(i,:)) 
    poss= find(not(cellfun('isempty', idxx)))
    POSS{i}=poss;