Saltar al contenido
Control Automático Educación

Aprende como Integrar Excel con Matlab facilmente

En esta entrada vamos a aprender conectar Excel con Matlab para bien sea importar una hoja de excel dentro de matlab y efectuar diversos análisis o para exportar datos desde matlab hacia una hoja de excel.

Antes de comenzar, puedes dar un vistazo en el curso gratuito de Matlab del sitio WEB para que continues aprendiendo mas sobre este poderoso software de ingeniería.

También te invito a suscribirte al Canal de YouTube para que estés enterado de nuevas actualizaciones del curso y por si deseas aprender además sobre modelado y control de procesos.

Vamos a entender entonces como leer celdas de excel en matlab.

Importar Datos de Excel a Matlab

Para poder importar una hoja de excel a matlab podemos valernos de diferentes comandos que la herramienta nos disponibiliza.

xlsread Matlab

El más común de todos para importar datos CSV o de excel a matlab se llama xlsread y su sintaxis se muestra a continuación:

[num,txt,raw] = xlsread(filename,sheet,xlRange)

Donde:

  • num: datos numéricos en una matriz.
  • txt: campos de texto del array de celdas
  • raw: datos numéricos y de texto del array de celdas
  • filename: Archivo de Excel escrito entre apostrofes ‘ file.xls’
  • sheet:  hoja de cálculo
  • xlRange:  rango especificado, ‘A1: C8’.

Con esta simple y popular instrucción conseguimos llamar excel desde matlab para poder procesar y analizar nuestros datos.

Sin embargo, según la documentación de MatWorks para importar datos de excel a matlab la instrucción xlsread es ineficiente y probablemente será descontinuada.

Por lo tanto si queremos crear hojas de cálculo de excel dentro de matlab, se recomienda emplear cualquiera de las siguientes funciones:

  • readtable
  • readmatrix
  • readcell

Estos comandos para convertir Excel a Matlab los explicamos en detalle a continuación junto con su video explicativo.

Matlab Readtable

Uno de los comandos que nos permiten copiar de excel a matlab es el comando readtable que disponibiliza el software.

Este comando permite crear Tablas de Excel en Matlab. Es decir, podremos valernos de otro tipo de datos dentro de matlab adicional a los que ya hemos estudiado conocido como table.

Su sintaxis es totalmente parecida con xlsread, donde los parámetros de entrada deben escribirse entre apostrofes ”, y los atributos obligatorios están señalados en negrito indicando cual es la hoja de cálculo y el rango que se desea seleccionar.

Los parámetros del readtable en matlab son Range y Sheet.

T = readtable(filename,‘sheet’,nameSheet,‘Range’,Range)

Matlab Readmatrix

El comando de Matlab de readmatrix es otra instrucción de programación que nos permite pasar de Excel a Matlab facilmente.

A partir de una hoja de cálculo de excel es posible generar una matriz de datos numéricos con este comando. La sintaxis obedece a la misma del caso anterior.

M = readmatrix(filename,‘sheet’,nameSheet,‘Range’,Range)

Matlab Readcell

Por último, una tercera opción para pasar un excel a matlab es usar la instrucción de readcell.

A partir de una hoja de cálculo de excel es posible generar una celda de datos con este comando. La sintaxis obedece a la misma de los casos anteriores.

C = readcell(filename,‘sheet’,nameSheet,‘Range’,Range)

Import Data Matlab

Import Data es una interfaz y herramienta bastante útil que nos permite, como su nombre lo indica, importar datos a Matlab.

Esta alternativa es mucho más práctica para importar los datos de una planilla de Excel dentro de Matlab.

Import Data puede ser ubicado en la barra de herramientas del Home.

import data de matlab
Importar hoja de Excel a Matlab

Despues seleccionamos el fichero CSV o el fichero XLSX para obtener datos de excel a matlab.

Desde la herramienta, podemos seleccionar con el puntero del mouse las celdas que deseamos dentro de la hoja de datos de excel para posteriormente importarlos en matlab.

Importar hoja de excel con matlab

También podremos definir el tipo de dato que queremos almacenar dentro de matlab. Es decir, los datos que importamos de Excel podremos almacenarlos en matlab como datos del tipo: table, varias columnas de vectores, matriz numérica, arreglo de strings o arreglo de celulas.

Los datos en amarillo dentro de la tabla, son datos que no pueden ser importados y dependen del tipo de variable que nosotros deseemos almacenar dentro de Matlab.

Por ejemplo, si la tabla posee strings pero nosotros deseamos almacenar la tabla como una matriz numérica, estos datos NO serán importables en matlab.

La herramienta de importación nos permite transformar estos datos en amarillo a cualquier otro valor que nosotros deseemos y el cual podemos ingresar directamente en la aplicación. Por defecto, la herramienta coloca el comando NaN (Not a Number).

NaN en Matlab importar datos de excel

Cada columna de la tabla de excel que deseamos exportar a matlab automaticamente es categorizada con el tipo de dato que contiene dicha columna: Datetime, categorical, Number, Text, etc.

Usted es libre de modificar este tipo de dato directamente desde la aplicación.

Tipo de datos en tabla de excel

Por último, se tiene la opción de importar los datos de una tabla o planilla de excel dentro de matlab de diversas formas: table, live scripts, scripts, functions.

importar datos de excel dentro de matlab

Suscríbete a este sitio WEB para estar enterado de las nuevas entradas!

Escribir datos de Matlab en Excel

En nuestros proyectos también puede ser necesario aprender como exportar variables de matlab a excel para almacenar nuestros datos.

Ejemplos

A continuación se muestran los scripts junto con las tablas de excel mostradas en el video para que practiques.

usando xlsread

%% Manejo de Datos de Archivos de Excel
% By: Sergio Andres Castaño Giraldo
% https://controlautomaticoeducacion.com/
clc
close all
clear all
%% Comando xlsread
%Leer datos de una hoja de Excel (Recomendado hasta Matlab R2018b)
[num,txt,raw] = xlsread('Datos1','Adquisicion 1');
% num(:,1) = Tiempo
% num(:,2) = Entrada
% num(:,3) = Salida
%Crea una figura
figure(1)
subplot(211) %Divide la figura en 2 filas y 1 columna (selecciona sub1)
plot(num(:,1),num(:,3)) %Grafica la salida
xlabel(txt{1}) %legenda en el eje X
ylabel(txt{3}) %legenda en el eje Y
subplot(212) %Divide la figura en 2 filas y 1 columna (selecciona sub2)
plot(num(:,1),num(:,2)) %Grafica la salida
xlabel(txt{1}) %legenda en el eje X
ylabel(txt{2}) %legenda en el eje Y
%_________________________________________
% Seleccionando Rangos
% Rango rectangular, especificado como un vector de caracteres o una cadena.
% Especifique el xlRange usando dos esquinas opuestas que definen la región a leer.
[num1,txt1,raw1] = xlsread('Datos1','Adquisicion 2','A5:C175');
dat_miss = find(isnan(num1));
[X,Y] = ind2sub(size(num1),dat_miss);
if ~isempty(X)
    warning(['Estan faltando datos entre las filas ' num2str(X(1)) ':' num2str(X(end))...
        ' y las columnas ' num2str(Y(1)) ':' num2str(Y(end))]);
end
% num(:,1) = Tiempo
% num(:,2) = Entrada
% num(:,3) = Salida
%Crea una figura
figure(2)
subplot(211) %Divide la figura en 2 filas y 1 columna (selecciona sub1)
plot(num1(:,1),num1(:,3)) %Grafica la salida
xlabel('Tiempo') %legenda en el eje X
ylabel('Salida') %legenda en el eje Y
subplot(212) %Divide la figura en 2 filas y 1 columna (selecciona sub2)
plot(num1(:,1),num1(:,2)) %Grafica la salida
xlabel('Tiempo') %legenda en el eje X
ylabel('Salida') %legenda en el eje Y

usando readtable

%% Manejo de Datos de Archivos de Excel
% By: Sergio Andres Castaño Giraldo
% https://controlautomaticoeducacion.com/
clc
close all
clear all
%% Comando readtable
% https://la.mathworks.com/help/matlab/ref/readtable.html
T = readtable('SampleData.xlsx','sheet','SalesOrders');
T1 = readtable('SampleData.xlsx','sheet','SalesOrders','Range','A2:G21');
% M = readmatrix('SampleData.xlsx','sheet','SalesOrders')
% C = readcell('SampleData.xlsx','sheet','SalesOrders')
%% Buscar el nombre de los representantes
rep = ''; %Inicializo el string
len = size(T); %Busco el tamaño de la tabla
k=1; %Inicializo el indice k
for i=1:len(1)
    if ~strcmpi(rep,T.Rep{i})  %compara el string "rep" con el string "T.Rep"
        rep{k,1}=T.Rep{i};     %si son diferentes entonces almacena el nombre en "rep"
        k=k+1;                 %incrementa el indice k
    end
end
%% Buscar cuanto vendio el representante Jones
indR = find(strcmpi(rep, 'Jones'));
Rep1 = find(strcmpi(T.Rep, rep{indR}));
Total_Rep1 = sum(T.Total(Rep1));
disp(strcat('El representante:', rep{indR},' vendió un total de $',num2str(Total_Rep1)))

Eso es todo por la entrada del dia de hoy, espero les haya gustado y hayan aprendido algo nuevo. Si te ha servido el contenido de esta entrada, de los videos y los códigos de implementación y deseas apoyar mi trabajo invitandome a un café super barato, puedes hacerlo en el siguiente link:

👉 Invitar a Sergio a un Café ☕️

Que esten muy bien, nos vemos en la siguiente entrada.