Saltar al contenido

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.

Lee detalladamente como importar datos de excel a matlab en esta entrada pues verás diferentes métodos con sus ventajas y desventajas para que puedas analizar todos tus datos.

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 leer datos de excel en 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)

Como verás en el ejemplo mostrado en el video, esta opción es bastante útil de como mostrar una tabla de excel en matlab para su posterior análisis.

Matlab Readmatrix

El comando de Matlab de readmatrix es otra instrucción de programación que nos permite exportar datos 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 datos de 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 datos de matlab a excel.

A continuación vamos a detallar vários métodos de como exportar datos de matlab a excel.

xlswrite matlab

Este es otro de los comandos más comunes a la hora de querer exportar de matlab a excel para la creación de archivos .xls o .csv.

La sintaxis del comando xlswrite de matlab se muestra a continuación:

xlswrite(filename, A, sheet, xlRange)

Donde:

  • filename: Es el nombre que deseamos colocarle al archivo de excel escrito entre apostrofes ‘ file.xls’
  • A: Es la matriz de datos de Matlab que desea escribirse en el archivo de excel.
  • sheet:  hoja de cálculo donde se desea escribir la matriz A
  • xlRange:  rango especificado, ‘A1: C8’.

Con esta simple y popular instrucción conseguimos escribir datos en hojas de cálculo de Excel usando el software de matlab rápidamente.

Sin embargo, al igual que el comando xlsread, este comando xlswrite también es ineficiente y probablemente será descontinuado.

Entonces para exportar variables de matlab a excel existen otros métodos mucho más interesantes descritos a continuación.

writetable

Uno de los comandos que nos permiten usar datos de matlab y exportarlos hacia excel es el writetable.

Con este comando podremos directamente exportar las variables del tipo table de matlab (que de por si son muy parecidas a las tablas de excel) y almacenarlos directamente en una hoja de cálculos.

Su sintaxis es totalmente parecida con xlswrite, 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 writetable en matlab son la variable table de matlab (T), el Range y el Sheet.

writetable(T, filename,‘sheet’,nameSheet,‘Range’,Range)

Como verás en el ejemplo mostrado en el video, esta opción es bastante útil de como escribir una tabla en excel usando el matlab.

writematrix

El comando de Matlab de writematrix es otra instrucción de programación que nos permite exportar datos de matlab a excel facilmente.

A partir de cualquier matriz que creamos dentro de matlab, podremos escribirla directamente hacia excel usando esta instrucción.

La sintaxis obedece a la misma del caso anterior, donde M es una matriz cualquiera creada dentro de MATLAB.

writematrix(M, filename,‘sheet’,nameSheet,‘Range’,Range)

writecell

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

A partir de cualquier celula, celda o cell creada dentro del software de matlab, podremos llevarla directamente hacia excel usando este comando.

La sintaxis obedece a la misma de los casos anteriores. Donde C hace referencia a una cell creada dentro de matlab.

writecell(C, filename,‘sheet’,nameSheet,‘Range’,Range)

Ejemplos

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

Leer Datos de Excel en Matlab

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)))

Escibir datos de Matlab a Excel

A continuación te dejo el código de ejemplo para que lo descargues:

%% ESCRIBIR de Datos de Archivos de Excel
% By: Sergio Andres Castaño Giraldo
% https://controlautomaticoeducacion.com/

% Se desea exportar o escribir los datos del experimento de un laboratório
% de temperatura que están almacenados en el archivo de Matlab "dat2.mat",
% ese archivo contiene los datos del tiempo, disturbio, y señal del sensor
% de temperatura además de tener las aproximaciones de dos modelos: n
% modelo lineal y un modelo no lineal.
% Exporte todos esos datos a EXCEL.

clc
clear all
close all

%Carga los datos
load('dat2.mat');

%% Crea una tabla con los datos
Modelo_Lineal = y(:,1);
Modelo_NO_Lineal = y(:,2);
Datos = y(:,3);
T = table(t,u,Modelo_Lineal,Modelo_NO_Lineal,Datos);

%% Comando xlswrite (no recomendado por matlab)
L =  {'Tiempo','Disturbio','Modelo Lineal','Modelo No lineal','Datos'};
%xlswrite solo acepta matrices o celulas, convierto la table en cell
C = table2cell(T);
% Concateno en la matriz cell la legenda de cada columna
A = [L;C]; 

xlswrite('TCLAB.xlsx',A,'xlswrite','A2');

%% Comando writetable
writetable(T,'TCLAB.xlsx','sheet','WriteTable','Range','A2');

%% Comando writematrix
% Solo toma los valores numéricos. Vamos a escribir unicamente hasta el
% modelo lineal (columnas A1, B1 y C1)
M = [t,u,y];
writematrix(M,'TCLAB.xlsx','sheet','WriteMatrix','Range','A1:C601');

%% Comando writecell
%Tomemos hasta la mitad de los datos
writecell(A,'TCLAB.xlsx','sheet','WriteCell','Range','A1:E301');

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.

Entradas relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Comentarios (3)

Hola Sergio, estoy en Octave y al ejecutar la funcion: table, tengo en la ventana de comandos la siguiente respuesta:
error: ‘table’ undefined near line 8, column 8

The ‘table’ function is not yet implemented in Octave.

Idem cuando utilizo las funciones readtable, readmatriz y readcell.
He leido que a traves de Octave-Forge puedo instalar el paquete escribiendo:
pkg install -forge «Nombre del Paquete a Instalar», pero no sé el nombre del paquete que contiene las mencionadas funciones faltantes.
Podrías ayudarme a solucionar este problema?

Responder

No me descargan los códigos ni la tabla de datos.

Responder

Hola Gabriel, gracias por avisar, ya lo he corregido. Saludos.

Responder