Why my code is not working, showing the error "Illegal use of reserved keyword "elseif"

조회 수: 5 (최근 30일)

Parse error: Illegal use of reserved keyword "elseif".

Function 'MATLAB Function' (#23.614.615), line 44, column 5: "e" Launch diagnostic report.

function [SaT, SaB, SbT, SbB, ScT, ScB] = pwm(u) f = 50; ts=0.0002; vdc=1; peak_phase_max = vdc/sqrt(3);

x=u(2);

y=u(3); mag=(u(1)/peak_phase_max) * ts;

% sector I if (x>=0) && (x<pi/3)

ta = mag * sin(pi/3-x); tb = mag * sin(x); t0 =(ts-ta-tb); t1=[t0/4 ta/2 tb/2 t0/2 tb/2 ta/2 t0/4]; t1=cumsum(t1);

v1=[0 1 1 1 1 1 0]; v2=[0 0 1 1 1 0 0]; v3=[0 0 0 1 0 0 0]; for j=1:7 if(y<t1(j)) break end end SaT = v1(j); SaB = 1-v1(j); SbT = v2(j); SbB = 1-v2(j); ScT = v3(j); ScB = 1-v3(j);

end

% sector II elseif (x>=pi/3) && (x<2*pi/3)

adv= x-pi/3; tb = mag * sin(pi/3-adv); ta = mag * sin(adv); t0 =(ts-ta-tb);

t1=[t0/4 ta/2 tb/2 t0/2 tb/2 ta/2 t0/4]; t1=cumsum(t1);

v1=[0 0 1 1 1 0 0]; v2=[0 1 1 1 1 1 0]; v3=[0 0 0 1 0 0 0];

for j=1:7 if(y<t1(j)) break end end

SaT = v1(j); SaB = 1-v1(j); SbT = v2(j); SbB = 1-v2(j); ScT = v3(j); ScB = 1-v3(j);

end %sector III

    elseif (x>=2*pi/3) && (x<pi)
        		adv=x-2*pi/3;
                ta = mag * sin(pi/3-adv);
		        tb = mag * sin(adv);
		        t0 =(ts-ta-tb);

t1=[t0/4 ta/2 tb/2 t0/2 tb/2 ta/2 t0/4]; t1=cumsum(t1); v1=[0 0 0 1 0 0 0]; v2=[0 1 1 1 1 1 0]; v3=[0 0 1 1 1 0 0]; for j=1:7 if(y<t1(j)) break end end SaT = v1(j); SaB = 1-v1(j); SbT = v2(j); SbB = 1-v2(j); ScT = v3(j); ScB = 1-v3(j); end

%sector IV

    elseif (x>=-pi) && (x<-2*pi/3)
                adv = x  + pi; 

tb= mag * sin(pi/3 - adv); ta = mag * sin(adv); t0 =(ts-ta-tb);

t1=[t0/4 ta/2 tb/2 t0/2 tb/2 ta/2 t0/4]; t1=cumsum(t1); v1=[0 0 0 1 0 0 0]; v2=[0 0 1 1 1 0 0]; v3=[0 1 1 1 1 1 0];

for j=1:7 if(y<t1(j)) break end end

SaT = v1(j); SaB = 1-v1(j); SbT = v2(j); SbB = 1-v2(j); ScT = v3(j); ScB = 1-v3(j);

end % sector V

    elseif (x>=-2*pi/3) && (x<-pi/3)

adv = x+2*pi/3;

ta = mag * sin(pi/3-adv); tb = mag * sin(adv); t0 =(ts-ta-tb);

t1=[t0/4 ta/2 tb/2 t0/2 tb/2 ta/2 t0/4]; t1=cumsum(t1); v1=[0 0 1 1 1 0 0]; v2=[0 0 0 1 0 0 0]; v3=[0 1 1 1 1 1 0];

for j=1:7 if(y<t1(j)) break end end

SaT = v1(j); SaB = 1-v1(j); SbT = v2(j); SbB = 1-v2(j); ScT = v3(j); ScB = 1-v3(j);

end

%Sector VI (x>=-pi/3) && (x<0)

    else 

adv = x+pi/3; tb = mag * sin(pi/3-adv); ta = mag * sin(adv); t0 =(ts-ta-tb);

t1=[t0/4 ta/2 tb/2 t0/2 tb/2 ta/2 t0/4]; t1=cumsum(t1); v1=[0 1 1 1 1 1 0]; v2=[0 0 0 1 0 0 0]; v3=[0 0 1 1 1 0 0]; for j=1:7 if(y<t1(j)) break end end SaT = v1(j); SaB = 1-v1(j); SbT = v2(j); SbB = 1-v2(j); ScT = v3(j); ScB = 1-v3(j); end

답변 (2개)

Kai Domhardt
Kai Domhardt 2018년 5월 1일
Your control flow is broken, it appears that there is always one "end" when you see three "end"
Also there is no If statement corresponding to all those Elseif statements.
I have deleted all conditionals and actual code, as to leave only the control flow structure, that should make it easier to see what is wrong.
function
% sector I
for
if
end
end
end
% sector II
for
if
end
end
end
%sector III
elseif
for
if
end
end
end
%sector IV
elseif
for
if
end
end
end
% sector V
elseif
for
if
end
end
end
%Sector VI
else
for
if
end
end
end

keerthi vardhana
keerthi vardhana 2018년 5월 30일
STILL I HAD RECEIVED ERROR ?
  댓글 수: 1
Steven Lord
Steven Lord 2018년 5월 30일
If you have the code open in the MATLAB Editor, select all of it, right-click, and select "Smart Indent" from the context menu. This will line up for, if, elseif, and else statements with their corresponding end statements.
The final end should line up with the initial for or if. If it doesn't, you're probably missing one or more end statements. If it does but there are other end statements all at the same level of indentation (with the later ones possibly underlined in red) then you probably have too many end statements.
Basically, look for red Code Analyzer indicators as they will likely indicate where the problem is located (or where MATLAB was able to determine that there is a problem.)

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 MATLAB Compiler SDK에 대해 자세히 알아보기

태그

아직 태그를 입력하지 않았습니다.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by