Aprenda Matlab 6.1 - Universidad Politécnica de Madrid
Aprenda Matlab 6.1 - Universidad Politécnica de Madrid
Aprenda Matlab 6.1 - Universidad Politécnica de Madrid
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Aprenda</strong> <strong>Matlab</strong> <strong>6.1</strong> como si estuviera en Primero página 60<br />
Como se ha dicho, MATLAB dispone <strong>de</strong> funciones especiales para ayudar en el chequeo <strong>de</strong><br />
condiciones matriciales. Por ejemplo, la función isequal(A, B) <strong>de</strong>vuelve un uno si las dos matrices<br />
son idénticas y un cero en caso <strong>de</strong> que difieran en algo.<br />
<strong>6.1</strong>.2. SENTENCIA SWITCH<br />
La sentencia switch realiza una función análoga a un conjunto <strong>de</strong> if...elseif concatenados. Su forma<br />
general es la siguiente:<br />
switch switch_expresion<br />
case case_expr1,<br />
bloque1<br />
case {case_expr2, case_expr3, case_expr4,...}<br />
bloque2<br />
...<br />
otherwise, % opción por <strong>de</strong>fecto<br />
bloque3<br />
end<br />
Al principio se evalúa la switch_expresion, cuyo resultado <strong>de</strong>be ser un número escalar o una<br />
ca<strong>de</strong>na <strong>de</strong> caracteres. Este resultado se compara con las case_expr, y se ejecuta el bloque <strong>de</strong><br />
sentencias que corresponda con ese resultado. Si ninguno es igual a switch_expresion se ejecutan<br />
las sentencias correspondientes a otherwise. Según pue<strong>de</strong> verse en el ejemplo anterior, es posible<br />
agrupar varias condiciones <strong>de</strong>ntro <strong>de</strong> unas llaves (constituyendo lo que se llama un cell array o<br />
vector <strong>de</strong> celdas, explicado en el Apartado 5.4); basta la igualdad con cualquier elemento <strong>de</strong>l cell<br />
array para que se ejecute ese bloque <strong>de</strong> sentencias. La “igualdad” <strong>de</strong>be enten<strong>de</strong>rse en el sentido <strong>de</strong>l<br />
operador <strong>de</strong> igualdad (==) para escalares y la función strcmp() para ca<strong>de</strong>nas <strong>de</strong> caracteres). A<br />
diferencia <strong>de</strong> C/C++/Java 13 , en MATLAB sólo se ejecuta uno <strong>de</strong> los bloques relacionado con un<br />
case.<br />
<strong>6.1</strong>.3. SENTENCIA FOR<br />
La sentencia for repite un conjunto <strong>de</strong> sentencias un número pre<strong>de</strong>terminado <strong>de</strong> veces. La sentencia<br />
for <strong>de</strong> MATLAB es muy diferente y no tiene la generalidad <strong>de</strong> la sentencia for <strong>de</strong> C/C++/Java. La<br />
siguiente construcción ejecuta sentencias con valores <strong>de</strong> i <strong>de</strong> 1 a n, variando <strong>de</strong> uno en uno.<br />
o bien,<br />
for i=1:n<br />
sentencias<br />
end<br />
for i=vectorValores<br />
sentencias<br />
end<br />
don<strong>de</strong> vectorValores es un vector con los distintos valores que tomará la variable i.<br />
En el siguiente ejemplo se presenta el caso más general para la variable <strong>de</strong>l bucle<br />
(valor_inicial: incremento: valor_final); el bucle se ejecuta por primera vez con i=n, y luego i se va<br />
reduciendo <strong>de</strong> 0.2 en 0.2 hasta que llega a ser menor que 1, en cuyo caso el bucle se termina:<br />
for i=n:-0.2:1<br />
sentencias<br />
end<br />
13<br />
En C se ejecuta el caso seleccionado y todos los siguientes, salvo que se utilice la sentencia break.