Exportar arreglo de celdas multiformato a CSV / Export multiformat cell array to CSV (MATLAB)

CSV ExcelHe aquí de nuevo, se evidenció mi ineficiencia en Google o no existe algo para eso (abogo por lo primero…) Esta es una función para MATLAB que permite exportar un arreglo de celdas con contenido multiformato (cadenas de texto, números) a un archivo CSV. Te permite elegir el tipo de separador de campo que quieras. También, tiene incluido un trocito de código para que puedas cambiarle el separador decimal a los números con dígitos decimales. Esto último es a razón de las configuraciones regionales de los Sistemas Operativos, que en dependencia de tu configuración, puede tomar como separador decimal la coma o el punto, al igual que la coma o el punto y coma como separador de campo del archivo CSV.

Función cellstrnum2csv:

function cellstrnum2csv(filename, cellarray, delimiter, separadordecimal)
% Función para convertir un arreglo de celdas contenidos de strings y/o
% enteros a un archivo csv usando cualquier simbolo como delimitador.

% Uso: cellstrnum2csv(filename, cellarray, delimiter)

% --> "filename" es un string con el nombre del archivo a exportar
% --> "cellarray" es el arrglo de celdas que se desea exportar
% --> "delimiter" es un string con el símbolo delimitador
% --> "separadordecimal" es un string con el símbolo de separación decimal

% Ej: cellstrnum2csv('datos.csv', resultados, ';', ',')

% Hecho por el Yerba para el vago y numérico MatLab.

fid = fopen(filename, 'wt');
[filas columnas]=size(cellarray);
clear counter_row counter_col;

if separadordecimal=='.'
    for counter_row=1:filas
        string=char();
        for counter_col=1:columnas
            string=strcat(string,num2str(cellarray{counter_row,counter_col}),delimiter);
        end
        fprintf(fid, strcat(string,'\n'));
    end
else
    for counter_row=1:filas
        string=char();
        for counter_col=1:columnas
            string=strcat(string,charchange(num2str(cellarray{counter_row,counter_col}),'.',separadordecimal),delimiter);
        end
        fprintf(fid, strcat(string,'\n'));
    end
end
clear separadordecimal counter_row counter_col
fclose(fid);

La función anterior depende de la siguiente llamada “charchange” que se ocupa de sustituir un carácter dentro de un arreglo de caracteres (o sea, una cadena de texto).

Función charchange:

function newstring=charchange(string,old_char,new_char)
% Cambia en un string, un carácter por otro.
%
% Uso: charchange(string,old_char,new_char)
%
% --> "string" es la variable tipo string que contiene el carácter que se desea cambiar
% --> "old_char" es un string que contiene el carácter que se va a
% sustituir
% --> "new_char" es un string que contiene el carácter que va a
% sustituir al anterior
%
% Ej: charchange(varstr,'.',',')

[row col] = size(string);
clear row i;
for i = 1:col
    if string(i) == old_char
        string(i) = new_char;
    end
end
newstring=string;
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s