2012
Matlab dilengkapi dengan kemampuan untuk mengakses item-item yang tersimpan dalam dokumen hasil perangkat lunak pengolah kata seperti MsWord, Notepad dan sejenisnya. Matlab juga bias melakukan hal yang sama untuk perangkat lunak seperti Excel dan lain-lain. Kemampuannya ini bisa dimanfaatkan ketika data yang kita miliki ternyata tersimpan dalam format file lain, bukan *.mat yang biasa kita kenal dihasilkan oleh Matlab. Sebelum mengetahui tentang membaca file dari txt, terlebih dahulu diperkenalkan cara menuliskan data ke txt. Berikut ini contoh beserta langkah-langkahnya dalam bentuk komentar pada program. Contoh:
clear all; close all; clc; % 1. buat nama file filename='tulisteks.txt'; % buat objek fid fid=fopen(filename,'w+'); % 2. siapkan data % contoh: generate nilai sinus untuk 0-2*pi t=0:1/1:2*pi; y=sin(t); data=[t' y']; % 3. tuliskan data ke txt % gunakan while agar data dapat disimpan terstruktur % dan bila di view menggunakan notepad, memang tidak % terstruktur, tapi matlab mengingat bahwa itu sudah % terstruktur. ct=1; while ct<=length(t) % gunakan fungsi FPRINTF fprintf(fid,'%f %f \n',data(ct,:)); ct=ct+1; end % 4. tutup objek fid fclose(fid);
[janshendry@gmail.com] |email
Basic
2012
untuk melihat format data yang telah disimpan dalam tulisteks.txt, anda bisa mengetik TYPE FILENAME di MATLAB COMMAND WINDOW. Ini hasilnya:
Bila kita ingin menulis data yang berbeda ke file yang sama sehingga data yang baru akan di append ke data yang lama, dapat dilakukan dengan cara ini Ada beberapa cara untuk membaca txt. 1. Dengan menggunakan fungsi load contoh di bawah ini untuk kasus membaca data dari tulisteks.txt yang dihasilkan dari program di atas.
clear all; close all; clc; % 1. gunakan LOAD untuk membuka file txt filename='tulisteks.txt'; data=load(filename); % 2. alokasikan variabel baru untuk temporal atau bisa % saja anda tidak perlu melakukannya t=data(:,1); y=data(:,2); % 3. ini hanyalah proses untuk plot data plot(t,y,'r'); title('Sine Wave'); xlabel('t'); ylabel('y'); grid on;
[janshendry@gmail.com] |email
Basic
2012
2. Dengan menggunakan fungsi fopen dan fscanf yang dikhususkan memang untuk membaca text.
Contoh berikut ini juga untuk kasus yang sama dengan point 1.
clear all; close all; clc; % 1. siapkan objek fid dan gunakan fopen untuk % membuka file filename='tulisteks.txt'; fid=fopen(filename); % 2. membaca isi dari text dengan fscanf data=fscanf(fid,'%f %f',[2 inf]); % 3. menutup objek fid (penting dilakukan) fclose(fid);
[janshendry@gmail.com] |email
Basic % memindahkan isi dari variabel data agar bagus data=data'; t=data(:,1); y=data(:,2); % hanya plot data plot(t,y,'r'); title('Sine Wave'); xlabel('t'); ylabel('y'); grid on;
2012
3. Dengan menggunakan fungsi yang sebenarnya diperuntukkan untuk file binary, yakni fungsi fgetl. Dengan melakukan sedikit konversi dari char ke numeric maka kita bisa memanfaatkan fungsi ini.
[janshendry@gmail.com] |email
2012
% 1. siapkan objek fid filename='tulisteks.txt'; fid=fopen(filename); % membaca menggunakan fgetl untuk deteksi newline cline=fgetl(fid); ct=1; while ischar(cline) data(ct,:)=str2num(cline); cline=fgetl(fid); ct=ct+1; end % tutup fid fclose(fid); % membuat variabel t=data(:,1); y=data(:,2); % hanya plot data plot(t,y,'r'); title('Sine Wave'); xlabel('t'); ylabel('y'); grid on;
[janshendry@gmail.com] |email
Basic
2012
4. Dengan menggunakan fungsi fgets yang juga diperuntukkan untuk binary file, tapi dia menambahkan newline. Perlakuan sama persis dengan fgetl.
% 1. siapkan objek fid filename='tulisteks.txt'; fid=fopen(filename); % membaca menggunakan fgetl untuk deteksi newline cline=fgets(fid); ct=1; while ischar(cline) data(ct,:)=str2num(cline); cline=fgets(fid); ct=ct+1; end
[janshendry@gmail.com] |email
Basic
2012
% tutup fid fclose(fid); % membuat variabel t=data(:,1); y=data(:,2); % hanya plot data plot(t,y,'r'); title('Sine Wave'); xlabel('t'); ylabel('y'); grid on;
5. Dengan menggunakan fungsi kombinasi antara sscanf dan fgetl. Sehingga kita tidak perlu melakukan konversi char ke numeric.
[janshendry@gmail.com] |email
Basic clear all; close all; clc; % 1. siapkan objek fid filename='tulisteks.txt'; fid=fopen(filename); % membaca menggunakan fgetl untuk deteksi newline cline=fgetl(fid); ct=1; while ischar(cline) data(ct,:)=sscanf(cline,'%f %f'); cline=fgetl(fid); ct=ct+1; end % tutup fid fclose(fid); % menyiapkan variabel t=data(:,1); y=data(:,2); % hanya plot data plot(t,y,'g'); title('Sine Wave'); xlabel('t'); ylabel('y'); grid on;
2012
[janshendry@gmail.com] |email
Basic
2012
6. Dengan menggunakan textscan. Hasil dari pembacaan akan disimpan dalam struct sehingga perlu diubah ke dalam variable biasa terlebih dahulu agar mudah dalam akses.
% 1. siapkan objek fid filename='tulisteks.txt'; fid=fopen(filename); % 2. membaca menggunakan textscan dengan kolom 2 data=textscan(fid,'%f %f',[2 inf]); % tutup fid fclose(fid); % membuat variabel t=data{1}; y=data{2}; % hanya plot data plot(t,y,'m'); title('Sine Wave'); xlabel('t'); ylabel('y'); grid on;
[janshendry@gmail.com] |email
Basic
2012
Tampaknya sudah cukup banyak cara yang telah diuraikan di atas untuk membantu dalam akses data dari text. Sekarang jika kita ingin membuka data untuk append data baru, bisa digunakan code berikut:
clear all; close all; clc; % 1. nama file yang akan dibuka filename='tulisteks.txt'; % a+ artinya append data baru terhadap file fid=fopen(filename,'a+'); % 2. siapkan data baru v1=1:10; v2=2*v1; v=[v1' v2']; % 3. tuliskan data baru ke dalam file yang sudah ada ct=1; while ct<=length(v1) % gunakan fungsi FPRINTF fprintf(fid,'%f %f \n',v(ct,:)); ct=ct+1;
[janshendry@gmail.com] |email
2012
hasilnya adalah
Tampak bahwa data baru telah di append ke data yang lama. Demikianlah artikel ini ditulis semoga bisa memberikan sedikit bantuan untuk anda.
@ thanks
[janshendry@gmail.com] |email