2016-09-18 52 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',''})'在這種情況下,我寧願使用開關。 –