← MATLAB EspañolChapter 08 of 13

Importacion y Exportacion de Datos

## Objetivos de Aprendizaje - Importar datos de archivos - Exportar datos a archivos - Trabajar con diferentes formatos de archivo - Manejar datos faltantes ## Archivos de Texto ### Leer Archivos de Texto ```matlab % Leer archivo completo como texto fid = fopen('data.txt', 'r'); text = fread(fid, '*char')'; fclose(fid); ``` ### Leer con fscanf ```matlab % Lectura formateada fid = fopen('data.txt', 'r'); data = fscanf(fid, '%f %f %f', [3, inf]); fclose(fid); data = data'; % Transponer para obtener filas como registros ``` ### Leer Linea por Linea ```matlab fid = fopen('data.txt', 'r'); while ~feof(fid) line = fgetl(fid); disp(line) end fclose(fid); ``` ## Archivos CSV ### Leer CSV ```matlab % Lectura basica de CSV data = readmatrix('data.csv'); % Con fila de encabezado data = readmatrix('data.csv', 'NumHeaderLines', 1); % Especificar rango data = readmatrix('data.csv', 'Range', 'A2:D10'); ``` ### Leer con readtable ```matlab % readtable devuelve una tabla T = readtable('data.csv'); % Acceder por nombre de variable T.Name T.Age T.Height % Acceder por indice T{1, :} ``` ### Escribir CSV ```matlab % Escribir matriz M = [1, 2, 3; 4, 5, 6]; writematrix(M, 'output.csv'); % Escribir tabla T = table(['Juan'; 'Juana'], [25; 30], [170; 165], ... 'VariableNames', {'Name', 'Age', 'Height'}); writetable(T, 'people.csv'); ``` ## Archivos Excel ### Leer Excel ```matlab % Leer hoja completa data = readmatrix('data.xlsx'); % Leer hoja especifica data = readmatrix('data.xlsx', 'Sheet', 'Sheet2'); % Leer como tabla T = readtable('data.xlsx'); ``` ### Escribir Excel ```matlab % Escribir matriz M = magic(5); writematrix(M, 'magic.xlsx'); % Escribir tabla writetable(T, 'output.xlsx'); % Agregar a archivo existente writetable(T, 'existing.xlsx', 'WriteMode', 'append'); ``` ## Archivos Delimitados ### Opciones de readmatrix ```matlab % Delimitado por tabulacion data = readmatrix('data.txt', 'Delimiter', '\t'); % Delimitado por punto y coma data = readmatrix('data.txt', 'Delimiter', ';'); % Con multiples delimitadores data = readmatrix('data.txt', 'Delimiter', {',', ';', '\t'}); ``` ### Opciones de writematrix ```matlab % Delimitado por tabulacion writematrix(M, 'output.txt', 'Delimiter', '\t'); % Especificar precision writematrix(M, 'output.txt', 'Precision', 4); ``` ## Formato Nativo (.mat) ### Guardar Variables ```matlab % Guardar todas las variables del espacio de trabajo save('data.mat') % Guardar variables especificas save('data.mat', 'x', 'y', 'z') % Guardar con compresion save('data.mat', 'x', 'y', '-v7') % Guardar sin compresion save('data.mat', 'x', 'y', '-v6') ``` ### Cargar Variables ```matlab % Cargar todas las variables load('data.mat') % Cargar variables especificas load('data.mat', 'x', 'y') % Cargar a estructura S = load('data.mat'); S.x S.y ``` ## Tablas ### Creando Tablas ```matlab % From arrays Age = [25, 30, 35]'; Height = [170, 165, 180]'; Name = {'Juan'; 'Juana'; 'Roberto'}'; T = table(Name, Age, Height); ``` ### Operaciones con Tablas ```matlab % Mostrar primeras filas head(T) % Mostrar ultimas filas tail(T) % Obtener resumen summary(T) % Agregar fila T(end+1, :) = {'Miguel', 28, 175}; % Eliminar fila T(2, :) = []; ``` ### Indexacion de Tablas ```matlab % Por indice de fila/columna T{1, 2} % Edad de la primera persona T{2, 'Name'} % Nombre de la segunda persona T.Age % Columna edad como arreglo T(:, {'Name', 'Age'}) % Columnas especificas ``` ## Datos Faltantes ### Detectando Valores Faltantes ```matlab % NaN en datos numericos data = [1, NaN, 3, 4, NaN]; isnan(data) % [0, 1, 0, 0, 1] any(isnan(data)) % true ``` ### Manejando Valores Faltantes ```matlab data = [1, NaN, 3, 4, NaN]; % Eliminar NaN clean = data(~isnan(data)); % [1, 3, 4] % Llenar NaN con valor filled = fillmissing(data, 'constant', 0); % Llenar con interpolacion filled = fillmissing(data, 'linear'); % Llenar con valor anterior filled = fillmissing(data, 'previous'); ``` ### Tabla con Datos Faltantes ```matlab T = readtable('data.csv'); % Encontrar valores faltantes ismissing(T) % Eliminar filas con faltantes T = rmmissing(T); % Llenar faltantes T = fillmissing(T, 'constant', 0); ``` ## E/S de Archivos de Bajo Nivel ### Modos de Apertura de Archivos | Modo | Descripcion | |------|-------------| | `r` | Lectura (predeterminado) | | `w` | Escritura (crear/truncar) | | `a` | Agregar (crear/escribir al final) | | `r+` | Lectura y escritura | | `w+` | Lectura y escritura (crear/truncar) | ### Escribir a Archivo ```matlab fid = fopen('output.txt', 'w'); fprintf(fid, 'Hola, %s!\n', 'Mundo'); fprintf(fid, 'Valor: %d\n', 42); fclose(fid); ``` ### Leer de Archivo ```matlab fid = fopen('data.txt', 'r'); name = fscanf(fid, '%s', 1); value = fscanf(fid, '%d', 1); fclose(fid); ``` ## Archivos Binarios ### Leer Binario ```matlab fid = fopen('data.bin', 'r'); data = fread(fid, 100, 'float32'); fclose(fid); ``` ### Escribir Binario ```matlab fid = fopen('data.bin', 'w'); fwrite(fid, myData, 'float32'); fclose(fid); ``` ## Archivos XML ```matlab % Parsear XML tree = xmlread('data.xml'); % Navegar y extraer datos root = tree.getDocumentElement; child = root.getFirstChildElement; ``` ## Archivos de Imagen ```matlab % Leer imagen img = imread('image.png'); % Mostrar imagen imshow(img) % Escribir imagen imwrite(img, 'output.png'); % Escribir JPEG con calidad imwrite(img, 'output.jpg', 'Quality', 90); ``` ## Ejemplos de Importacion ### Importar Texto de Ancho Fijo ```matlab % Definir formato format = '%2s %5f %4f %3f'; % Leer con textscan fid = fopen('data.txt', 'r'); C = textscan(fid, format); fclose(fid); ``` ### Importar con Encabezado ```matlab opts = detectImportOptions('data.csv'); opts.VariableNamesLine = 1; opts.DataLines = 2:10; T = readtable('data.csv', opts); ``` ## Resumen - `readmatrix()` para datos numericos en archivos delimitados - `readtable()` para datos tabulares con encabezados - `save()`/`load()` para archivos .mat de MATLAB - Usar opcion `'Delimiter'` para diferentes separadores - Manejar datos faltantes con `isnan()`, `rmmissing()`, `fillmissing()` - Usar `fopen()`/`fprintf()`/`fscanf()` para formatos de archivo personalizados - `imread()`/`imwrite()` para archivos de imagen

Comments

Comments powered by Giscus

To enable comments, add your Giscus embed code here.

Learn more about Giscus →