MATLAB - Saída de Dados

A exportação (ou saída) de dados em MATLAB significa escrever em arquivos. O MATLAB permite que você use seus dados em outro aplicativo que lê arquivos ASCII. Para isso, o MATLAB oferece várias opções de exportação de dados.

Você pode criar os seguintes tipos de arquivos -

  • Arquivo de dados ASCII retangular e delimitado de uma matriz.

  • Arquivo de diário (ou registro) de pressionamentos de tecla e a saída de texto resultante.

  • Arquivo ASCII especializado usando funções de baixo nível, como fprintf.

  • Arquivo MEX para acessar sua rotina C / C ++ ou Fortran que grava em um formato de arquivo de texto específico.

Além disso, você também pode exportar dados para planilhas.

Existem duas maneiras de exportar uma matriz numérica como um arquivo de dados ASCII delimitado -

  • Usando o save função e especificando o -ascii qualificador

  • Usando o dlmwrite função

A sintaxe para usar a função salvar é -

save my_data.out num_array -ascii

onde my_data.out é o arquivo de dados ASCII delimitado criado, num_array é uma matriz numérica e−ascii é o especificador.

Sintaxe para usar o dlmwrite função é -

dlmwrite('my_data.out', num_array, 'dlm_char')

onde, my_data.out é o arquivo de dados ASCII delimitado criado, num_array é uma matriz numérica e dlm_char é o caractere delimitador.

Exemplo

O exemplo a seguir demonstra o conceito. Crie um arquivo de script e digite o seguinte código -

num_array = [ 1 2 3 4 ; 4 5 6 7; 7 8 9 0];
save array_data1.out num_array -ascii;
type array_data1.out
dlmwrite('array_data2.out', num_array, ' ');
type array_data2.out

Quando você executa o arquivo, ele exibe o seguinte resultado -

1.0000000e+00   2.0000000e+00   3.0000000e+00   4.0000000e+00
   4.0000000e+00   5.0000000e+00   6.0000000e+00   7.0000000e+00
   7.0000000e+00   8.0000000e+00   9.0000000e+00   0.0000000e+00

1 2 3 4
4 5 6 7
7 8 9 0

Observe que o comando save -ascii e a função dlmwrite não funcionam com matrizes de células como entrada. Para criar um arquivo ASCII delimitado a partir do conteúdo de uma matriz de células, você pode

  • Ou converta a matriz de células em uma matriz usando o cell2mat função

  • Ou exporte a matriz de células usando funções de E / S de arquivo de baixo nível.

Se você usar o save para gravar uma matriz de caracteres em um arquivo ASCII, grava o equivalente em ASCII dos caracteres no arquivo.

Por exemplo, vamos escrever a palavra 'olá' em um arquivo -

h = 'hello';
save textdata.out h -ascii
type textdata.out

O MATLAB executa as instruções acima e exibe o seguinte resultado. que são os caracteres da string 'hello' no formato ASCII de 8 dígitos.

1.0400000e+02   1.0100000e+02   1.0800000e+02   1.0800000e+02   1.1100000e+02

Escrevendo em arquivos de diário

Arquivos de diário são registros de atividades de sua sessão do MATLAB. A função de diário cria uma cópia exata de sua sessão em um arquivo de disco, excluindo gráficos.

Para ligar a função de diário, digite -

diary

Opcionalmente, você pode fornecer o nome do arquivo de log, por exemplo -

diary logdata.out

Para desligar a função de diário -

diary off

Você pode abrir o arquivo do diário em um editor de texto.

Exportando dados para arquivos de dados de texto com E / S de baixo nível

Até agora, exportamos matrizes numéricas. No entanto, você pode precisar criar outros arquivos de texto, incluindo combinações de dados numéricos e de caracteres, arquivos de saída não retangulares ou arquivos com esquemas de codificação não ASCII. Para esses fins, o MATLAB fornece o baixo nívelfprintf função.

Como nas atividades de arquivo de E / S de baixo nível, antes de exportar, você precisa abrir ou criar um arquivo com o fopenfunção e obter o identificador do arquivo. Por padrão, fopen abre um arquivo para acesso somente leitura. Você deve especificar a permissão para escrever ou acrescentar, como 'w' ou 'a'.

Depois de processar o arquivo, você precisa fechá-lo com fclose(fid) função.

O exemplo a seguir demonstra o conceito -

Exemplo

Crie um arquivo de script e digite o seguinte código nele -

% create a matrix y, with two rows
x = 0:10:100;
y = [x; log(x)];
 
% open a file for writing
fid = fopen('logtable.txt', 'w');
 
% Table Header
fprintf(fid, 'Log     Function\n\n');
 
% print values in column order
% two values appear on each row of the file
fprintf(fid, '%f    %f\n', y);
fclose(fid);

% display the file created
type logtable.txt

Quando você executa o arquivo, ele exibe o seguinte resultado -

Log         Function

0.000000    -Inf
10.000000    2.302585
20.000000    2.995732
30.000000    3.401197
40.000000    3.688879
50.000000    3.912023
60.000000    4.094345
70.000000    4.248495
80.000000    4.382027
90.000000    4.499810
100.000000    4.605170