Continue on With Switch Cases Matlab
Program Control
This section covers the following topics:
- Using break, continue, and return
- Using switch Versus if
- MATLAB case Evaluates Strings
- Multiple Conditions in a case Statement
- Implicit Break in switch/case
- Variable Scope in a switch
- Catching Errors with try/catch
- Nested try/catch Blocks
- Forcing an Early Return from a Function
Using break, continue, and return
It's easy to confuse the break
, continue
, and return
functions as they are similar in some ways. Make sure you use these functions appropriately.
Function | Where to Use It | Description |
break | for or while loops | Exits the loop in which it appears. In nested loops, control passes to the next outer loop. |
continue | for or while loops | Skips any remaining statements in the current loop. Control passes to next iteration of the same loop. |
return | Anywhere | Immediately exits the function in which it appears. Control passes to the caller of the function. |
Using switch Versus if
It is possible, but usually not advantageous, to implement switch
/case
statements using if
/elseif
instead. See pros and cons in the table.
switch/case Statements | if/elseif Statements |
Easier to read | Can be difficult to read |
Can compare strings of different lengths | You need strcmp to compare strings of different lengths |
Test for equality only | Test for equality or inequality |
MATLAB case Evaluates Strings
A useful difference between switch
/case
statements in MATLAB and C is that you can specify string values in MATLAB case
statements, which you cannot do in C.
-
switch(method) case 'linear' disp('Method is linear') case 'cubic' disp('Method is cubic') end
Multiple Conditions in a case Statement
You can test against more than one condition with switch
. The first case below tests for either a linear
or bilinear
method by using a cell array in the case statement.
-
switch(method) case {'linear', 'bilinear'} disp('Method is linear or bilinear') case (<and so on>) end
Implicit Break in switch/case
In C, if you don't end each case
with a break
statement, code execution falls through to the following case
. In MATLAB, case
statements do not fall through; only one case
may execute. Using break
within a case
statement is not only unnecessary, it is also invalid and generates a warning.
In this example, if result
is 52
, only the first disp
statement executes, even though the second is also a valid match:
-
switch(result) case 52 disp('result is 52') case {52, 78} disp('result is 52 or 78') end
Variable Scope in a switch
Since MATLAB executes only one case
of any switch
statement, variables defined within one case
are not known in the other case
s of that switch
statement. The same holds true for if
/ifelse
statements.
In these examples, you get an error when choice
equals 2
, because x
is undefined.
-
-- SWITCH/CASE -- -- IF/ELSEIF --
switch choice case 1 if choice == 1 x = -pi:0.01:pi; x = -pi:0.01:pi; case 2 elseif choice == 2 plot(x, sin(x)); plot(x, sin(x)); end end
Catching Errors with try/catch
When you have statements in your code that could possibly generate unwanted results, put those statements into a try
/catch
block that will catch any errors and handle them appropriately.
The example below shows a try
/catch
block within a function that multiplies two matrices. If a statement in the try
segment of the block fails, control passes to the catch
segment. In this case, the catch
statements check the error message that was issued (returned by lasterr
) and respond appropriately.
-
try X = A * B catch errmsg = lasterr; if(strfind(errmsg, 'Inner matrix dimensions')) disp('** Wrong dimensions for matrix multiply') end
For more information: See Checking for Errors with try-catch in the MATLAB "Programming and Data Types" documentation
Nested try/catch Blocks
You can also nest try
/catch
blocks, as shown here. You can use this to attempt to recover from an error caught in the first try
section:
-
try statement1 % Try to execute statement1 catch try statement2 % Attempt to recover from error catch disp 'Operation failed' % Handle the error end end
Forcing an Early Return from a Function
To force an early return from a function, place a return
statement in the function at the point where you want to exit. For example,
-
if <done> return end
MATLAB Path | Save and Load |
Source: http://www.ece.northwestern.edu/local-apps/matlabhelp/techdoc/matlab_prog/ch8_pr13.html
Post a Comment for "Continue on With Switch Cases Matlab"