Herramientas de usuario

Herramientas del sitio


math_langs:matlab

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
math_langs:matlab [2011/03/29 19:44]
alfred
math_langs:matlab [2020/05/09 09:25] (actual)
Línea 1: Línea 1:
 ====== MATLAB ====== ====== MATLAB ======
 +
 +
  
  
Línea 12: Línea 14:
   * **home** pondrá el cursor al inicio de la línea de comandos y **clc** la limpiará.   * **home** pondrá el cursor al inicio de la línea de comandos y **clc** la limpiará.
   * Cuando se realiza una operación el resultado se guarda (sobreescribe) una variable llamada ''​ans''​.   * Cuando se realiza una operación el resultado se guarda (sobreescribe) una variable llamada ''​ans''​.
 +  * **pause(x)** hace que matlab se detenga por x segundos. 
 +  * Pedir entrada al usuario por teclado, con la función **input('​ ')**.
  
  
Línea 19: Línea 22:
   * **help funcion**: Muestra la ayuda para dicha fucnción: ''​help solve''​.   * **help funcion**: Muestra la ayuda para dicha fucnción: ''​help solve''​.
   * **solve**: Soluciona una ecuación: ''​solve ('x + 3 = 55', '​x'​)'',​ retornará 52.   * **solve**: Soluciona una ecuación: ''​solve ('x + 3 = 55', '​x'​)'',​ retornará 52.
 +  * **random**: Recoge un valor aleatorio según una distribución indicada, por ejemplo un valor repartido uniformemenete entre 0 y 1000: ''​random ('​unif',​0,​1000)''​.
  
 ==== Entorno ==== ==== Entorno ====
Línea 45: Línea 49:
 x = 0.0:​0.01:​1.0 % de 0 a 1.0 de 0.01 en 0.01 x = 0.0:​0.01:​1.0 % de 0 a 1.0 de 0.01 en 0.01
 </​code>​ </​code>​
 +
  
  
Línea 71: Línea 76:
 matrix(2,​1:​2) % Fila 2, columnas 1 a 2 matrix(2,​1:​2) % Fila 2, columnas 1 a 2
 matrix(:,​1:​3) % Las tres primeras columnas matrix(:,​1:​3) % Las tres primeras columnas
 +</​code>​
 +
 +==== Cálculos con símbolos ====
 +Matlab permite realizar cálculos con símbolos\incógnitas,​ esto es, lanzar comandos y que el resultado sea una expresión en función de estas variables. \\ 
 +Con el comando ''​sym''​ podemos declarar una variable simbólica (con ''​syms''​ podemos declarar varias):
 +<code matlab>
 +alpha = sym('​alpha'​)
 +</​code>​
 +Con ''​subs''​ indicamos, en una variable que tenga una expresión en función de símbolos, los valores que han de tomar. Su sintaxis es: ''​subs(variable,​ {simbolos a sustituir}, {valores})''​. \\ 
 +<code matlab>
 +>> syms a b
 +>> Mat_A = [2 3 a; 5 43 1; 2 b 3]
 +Mat_A =
 +[ 2,  3, a]
 +[ 5, 43, 1]
 +[ 2,  b, 3]
 +>> Mat_B = [sin(a); 4; 5]
 +Mat_B =
 + ​sin(a)
 +      4
 +      5
 +>> Mat_C = Mat_A * Mat_B
 +Mat_C =
 + 5*a + 2*sin(a) + 12
 +      5*sin(a) + 177
 + 4*b + 2*sin(a) + 15
 +>> subs(Mat_C, {a, b}, {3, 4})
 +ans =
 +   ​27.2822
 +  177.7056
 +   ​31.2822
 </​code>​ </​code>​
  
 ===== Dibujar ===== ===== Dibujar =====
 +
 +
  
 ==== Funciones básicas de dibujo ==== ==== Funciones básicas de dibujo ====
   * ''​clf'':​ borra el dibujo actual.   * ''​clf'':​ borra el dibujo actual.
 +  * ''​hold on'':​ hace que todo lo que se dibuje a partir de ahora sea sobre el mismo dibujo.
 +==== Como... ====
 +  * **Dibujar un círculo**
 +<code matlab>
 +[x,y,z] = cylinder(Radius,​200);​
 +plot(x(1,:​),​y(1,:​))
 +axis equal
 +</​code>​
  
 ===== GUIS & GUIDE ===== ===== GUIS & GUIDE =====
 +
  
  
 ==== Funciones ==== ==== Funciones ====
   * ''​uiputfile'':​ Muestra un diálogo para guardar ficheros.   * ''​uiputfile'':​ Muestra un diálogo para guardar ficheros.
 +  * ''​uigetdir'':​ Muestra un diálogo para recoger un path.
 +
 ==== Como... ==== ==== Como... ====
   * Dibujar sobre varios ''​axe''​. Pongamos que tenemos uno con tag ''​axe1''​ y otro con tag ''​axe2''​ pues antes de dibujar, por ejemplo sobre ''​axe1'',​ haremos ''​axes(handles.axe1);''​.   * Dibujar sobre varios ''​axe''​. Pongamos que tenemos uno con tag ''​axe1''​ y otro con tag ''​axe2''​ pues antes de dibujar, por ejemplo sobre ''​axe1'',​ haremos ''​axes(handles.axe1);''​.
   * Si vamos a utilizar variables globales las tendremos que declarar al principio de la función como ''​global''​.   * Si vamos a utilizar variables globales las tendremos que declarar al principio de la función como ''​global''​.
 +  * Encontrar la distancia euclídea entre dos puntos:
 +<code matlab>
 +a = [2 3]
 +b = [4 8] 
 +d = pdist([a;​b],​ '​euclidean'​)
 +</​code>​
 +
 +
  
-===== Simulink ===== 
  
 ===== Librerías ===== ===== Librerías =====
 +
 +
 +
 +
 +
 +
 +
 +
  
  
Línea 106: Línea 170:
  
 \\ **Muestra información:​** \\ **Muestra información:​**
-  * ''​imshow(I)'':​ muestra la imágen I.+  * ''​imshow(I)'':​ muestra la imágen I. Podemos mostrar varias imágenes a la vez: ''​imshow([image1,​K,​ L]);''​ Un '';''​ la mostraría en la siguiente línea.
   * ''​imhist(I)'':​ muestra el histograma de I.   * ''​imhist(I)'':​ muestra el histograma de I.
 +  * ''​size(I)'':​ recoge el tamaño de I.
 +<code matlab>
 +[w h] = size(K);
 +</​code>​
  
 \\ **Edición:​** \\ **Edición:​**
Línea 113: Línea 181:
   * ''​im2bw(I,​ num)'':​ aplica un threshold (num de 0 a 1) a la imágen I.   * ''​im2bw(I,​ num)'':​ aplica un threshold (num de 0 a 1) a la imágen I.
   * ''​histeq(I)'':​ Ecualiza el histograma de la imágen.   * ''​histeq(I)'':​ Ecualiza el histograma de la imágen.
 +  * ''​imcrop(I,​ [x y width height])'':​ Hace un crop de la imágen.
 +  * ''​strel''​ crea un elemento morfológico,​ acepta una cadena que define el elemento y los parámetros para este. El elemento puede ''​square''​ (acepta un valor), ''​line''​ (acepta 2 valores: la longitud y el ángulo), ''​disk''​ (acepta un valor, el radio) y ''​ball''​ (acepta el radio y la altura).
 +  * ''​imdilate''​ dilata un borde según un elemento morfológico.
 +<code matlab>
 +se = strel('​disk',​5);​
 +image1 = imdilate(image1,​ se);
 +</​code>​
 +  * ''​imfill'':​ rellena una imágen hueca.
 +<code matlab>
 +image1 = imfill(image1,'​hole'​);​
 +</​code>​
 +
 +\\ **Algoritmos**
 +  * ''​edge (I, algoritmo)'':​ Detección de bordes por un algoritmo concreto, acepta: canny, sobel, prewitt, log, roberts, zerocross. A canny puedes indicarle el threshold para el corte en forma de vector de dos posiciones (donde la primera es el valor mínimo, y la segunda el máximo) o un escalar (el valor máximo).
 +<code matlab>
 +I1 = edge(I0, '​sobel'​);​
 +image1 = edge(image0,​ '​canny',​ .2);
 +</​code>​
  
 \\ **Notas:** \\ **Notas:**
   * ''​figure,​ imshow(I)'':​ abrirá una nueva ventana para mostrar imágenes y en ella mostrará la imágen I.   * ''​figure,​ imshow(I)'':​ abrirá una nueva ventana para mostrar imágenes y en ella mostrará la imágen I.
-=== Algoritmos === +  ​* ''​imtool'' ​es una herramienta que te permite realizar acciones básicas sobre imágenes como por ejemplo crop o ver los bytes RGB (al hacer mucho zoom).
-  ​* ''​edge (I, algoritmo)''​: Detección de bordes ​por un algoritmo concreto, acepta: canny, sobel, prewitt, log, roberts, zerocross.+
  
 ===== Notas ===== ===== Notas =====
   * {{math_langs:​matlabr.pdf|Comparación de MATLAB y R}}, sacada de [[http://​www.math.umaine.edu/​~hiebeler/​comp/​matlabR.html]].   * {{math_langs:​matlabr.pdf|Comparación de MATLAB y R}}, sacada de [[http://​www.math.umaine.edu/​~hiebeler/​comp/​matlabR.html]].
math_langs/matlab.1301427890.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)