MATLAB - Gegevensuitvoer
Gegevensexport (of uitvoer) in MATLAB betekent schrijven in bestanden. Met MATLAB kunt u uw gegevens gebruiken in een andere toepassing die ASCII-bestanden leest. Hiervoor biedt MATLAB verschillende opties voor het exporteren van gegevens.
U kunt het volgende type bestanden maken −
-
Rechthoekig, gescheiden ASCII-gegevensbestand uit een array.
-
Dagboekbestand (of logbestand) van toetsaanslagen en de resulterende tekstuitvoer.
-
Gespecialiseerd ASCII-bestand met functies op laag niveau, zoals fprintf.
-
MEX-bestand om toegang te krijgen tot uw C/C++- of Fortran-routine die schrijft naar een bepaald tekstbestandsformaat.
Afgezien hiervan kunt u ook gegevens naar spreadsheets exporteren.
Er zijn twee manieren om een numerieke array te exporteren als een gescheiden ASCII-gegevensbestand −
-
De opslaan . gebruiken functie en specificeren van de -ascii kwalificatie
-
De dlmwrite . gebruiken functie
Syntaxis voor het gebruik van de opslagfunctie is −
save my_data.out num_array -ascii
waar, my_data.out is het gescheiden ASCII-gegevensbestand dat is gemaakt, num_array is een numerieke array en −ascii is de specificatie.
Syntaxis voor het gebruik van de dlmwrite functie is −
dlmwrite('my_data.out', num_array, 'dlm_char')
waar, my_data.out is het gescheiden ASCII-gegevensbestand dat is gemaakt, num_array is een numerieke array en dlm_char is het scheidingsteken.
Voorbeeld
Het volgende voorbeeld demonstreert het concept. Maak een scriptbestand en typ de volgende code −
Live demonum_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
Wanneer u het bestand uitvoert, wordt het volgende resultaat weergegeven −
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
Houd er rekening mee dat de opdracht save -ascii en de functie dlmwrite niet werken met celarrays als invoer. Om een gescheiden ASCII-bestand te maken van de inhoud van een celarray, kunt u
-
Ofwel converteer de celarray naar een matrix met behulp van de cell2mat functie
-
Of exporteer de celarray met behulp van low-level bestands-I/O-functies.
Als u de opslaan . gebruikt functie om een tekenarray naar een ASCII-bestand te schrijven, het schrijft het ASCII-equivalent van de tekens naar het bestand.
Laten we bijvoorbeeld het woord 'hallo' naar een bestand schrijven −
Live demoh = 'hello'; save textdata.out h -ascii type textdata.out
MATLAB voert de bovenstaande instructies uit en geeft het volgende resultaat weer. dat zijn de tekens van de tekenreeks 'hallo' in 8-cijferige ASCII-indeling.
1.0400000e+02 1.0100000e+02 1.0800000e+02 1.0800000e+02 1.1100000e+02
Schrijven naar dagboekbestanden
Dagboekbestanden zijn activiteitenlogboeken van uw MATLAB-sessie. De dagboekfunctie maakt een exacte kopie van uw sessie in een schijfbestand, exclusief afbeeldingen.
Om de dagboekfunctie in te schakelen, typt u −
diary
Optioneel kunt u de naam van het logbestand opgeven, zeg −
diary logdata.out
De dagboekfunctie uitschakelen −
diary off
U kunt het dagboekbestand openen in een teksteditor.
Gegevens exporteren naar tekstgegevensbestanden met Low-Level I/O
Tot nu toe hebben we numerieke arrays geëxporteerd. Het kan echter zijn dat u andere tekstbestanden moet maken, inclusief combinaties van numerieke en tekengegevens, niet-rechthoekige uitvoerbestanden of bestanden met niet-ASCII-coderingsschema's. Voor deze doeleinden biedt MATLAB de low-level fprintf functie.
Net als bij I/O-bestandsactiviteiten op laag niveau, moet u voor het exporteren een bestand openen of maken met de fopen functie en haal de bestands-ID op. Standaard opent fopen een bestand voor alleen-lezen toegang. U moet de toestemming om te schrijven of toe te voegen specificeren, zoals 'w' of 'a'.
Na het verwerken van het bestand, moet u het sluiten met fclose(fid) functie.
Het volgende voorbeeld demonstreert het concept −
Voorbeeld
Maak een scriptbestand en typ de volgende code erin −
Live demo% 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
Wanneer u het bestand uitvoert, wordt het volgende resultaat weergegeven −
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
MATLAB