2016-09-18 103 views
-6

我有一个关于下面的语句问题。当我运行代码时,它不会进入所需的条件,也不会进行它应该进行的转换。任何我无法发现的错误?提前致谢。多个如果条件在Matlab

clear all; 
clc; 
recenica=('STEFI'); 
i=1; 
dolzina = length(recenica) 

while i<=length(dolzina) 
prva=recenica(i); 
vtora=recenica(i+1); 


if recenica(i)==('P' | 'M' | ' ') 
    prva='B'; 
end 
if recenica(i)==('U') 
    prva='O'; 
end 
if recenica(i)==('V') 
    prva='F'; 
end 

if recenica(i)==('G' | 'X' | 'Y' | 'J' | 'I') 
    prva='K'; 
end 

if recenica(i)==('L' | 'T' | 'D' | '3' | '2') 
    prva='N'; 
end 

if recenica(i)==('Z' | '1' | 'C') 
    prva='S'; 
end 

if recenica(i)==('5' | 'Q' | '4') 
    prva='6'; 
end 

if recenica(i)==('R') 
    prva='H'; 
end 


if recenica(i+1)==('P' | 'M' | ' ') 
    vtora='B'; 
end 
if recenica(i+1)==('U') 
    vtora='O'; 
end 
if recenica(i+1)==('V') 
    vtora='F'; 
end 

if recenica(i+1)==('G' | 'X' | 'Y' | 'J' | 'I') 
    vtora='K'; 
end 

if recenica(i+1)==('L' | 'T' | 'D' | '3' | '2') 
    vtora='N'; 
end 

if recenica(i+1)==('Z' | '1' | 'C') 
    vtora='S'; 
end 

if recenica(i+1)==('5' | 'Q' | '4') 
    vtora='6'; 
end 

if recenica(i+1)==('R') 
    vtora='H'; 
end 


a=strcat(prva,'.jpg'); 
b=strcat(vtora,'.jpg'); 

generiranje=Test3(a,b); 
i=i+1; 
end 
+0

亲爱的OP,“它没有进入所需的条件,并没有进行它应该的转换。任何错误,我不能发现?“听起来非常模糊,并没有提供足够的信息来回答你的问题。请考虑阅读文章http://stackoverflow.com/help/how-to-ask并相应地编辑你的问题 – brainkz

+0

逻辑或''''是矢量化的,这意味着它将在MATLAB中比较矢量而不是比特,比较比特时使用'bitor'。 – patrik

回答

0

你的MATLAB IF语法看起来很奇怪:

你的意思是用

if recenica(i)==('P' | 'M' | ' ') 

代码:

if (recenica(i)=='P') || (recenica(i)=='M') || (recenica(i)==' ') 

您可能需要使用开关/ case结构也:

Someth如:

switch recenica(i) 
    case {'P','M', ' '} 

end 
+0

你也可以使用[ismember](http://se.mathworks.com/help /matlab/ref/ismember.html),这会给出这个条件:'ismember(recencia(i),{'P','M',''})'在这种情况下,我宁愿使用开关。 –