Fungsi MATLAB: Definisi, Ruang Kerja, Masukan & Keluaran
Sebuah fungsi adalah sekumpulan pernyataan yang bersama-sama melakukan tugas. Dalam MATLAB, fungsi didefinisikan dalam file terpisah. Nama file dan nama fungsi harus sama.
Fungsi beroperasi pada variabel dalam ruang kerja mereka sendiri, yang juga disebut ruang kerja lokal, terpisah dari ruang kerja yang Anda akses di command prompt MATLAB yang disebut ruang kerja dasar.
Fungsi dapat menerima lebih dari satu argumen masukan dan dapat mengembalikan lebih dari satu argumen keluaran.
Sintaks pernyataan fungsi adalah −
function [out1,out2, ..., outN] = myfun(in1,in2,in3, ..., inN)
Contoh
Fungsi berikut bernama mymax harus ditulis dalam file bernama mymax.m. Ia mengambil lima angka sebagai argumen dan mengembalikan maksimum dari angka tersebut.
Buat file fungsi, bernama mymax.m dan ketik kode berikut di dalamnya −
function max = mymax(n1, n2, n3, n4, n5) %This function calculates the maximum of the % five numbers given as input max = n1; if(n2 > max) max = n2; end if(n3 > max) max = n3; end if(n4 > max) max = n4; end if(n5 > max) max = n5; end
Baris pertama dari sebuah fungsi dimulai dengan kata kunci function. Ini memberikan nama fungsi dan urutan argumen. Dalam contoh kita, fungsi mymax memiliki lima argumen masukan dan satu argumen keluaran.
Baris komentar yang muncul tepat setelah pernyataan fungsi memberikan teks bantuan. Baris ini dicetak ketika Anda mengetik −
help mymax
MATLAB akan mengeksekusi pernyataan di atas dan mengembalikan hasil berikut −
This function calculates the maximum of the five numbers given as input
Anda dapat memanggil fungsi sebagai −
mymax(34, 78, 89, 23, 11)
MATLAB akan mengeksekusi pernyataan di atas dan mengembalikan hasil berikut −
ans = 89
Fungsi Anonim
Sebuah fungsi anonim mirip dengan fungsi inline dalam bahasa pemrograman tradisional, yang didefinisikan dalam satu pernyataan MATLAB. Ini terdiri dari satu ekspresi MATLAB dan sejumlah argumen masukan dan keluaran.
Anda dapat mendefinisikan fungsi anonim langsung di command line MATLAB atau di dalam fungsi atau skrip.
Dengan cara ini Anda dapat membuat fungsi sederhana tanpa perlu membuat file untuk mereka.
Sintaks untuk membuat fungsi anonim dari ekspresi adalah
f = @(arglist)expression
Contoh
Dalam contoh ini, kita akan menulis fungsi anonim bernama power, yang akan mengambil dua angka sebagai masukan dan mengembalikan angka pertama dipangkatkan dengan angka kedua.
Buat file skrip dan ketik kode berikut di dalamnya −
Live Demo
power = @(x, n) x.^n; result1 = power(7, 3) result2 = power(49, 0.5) result3 = power(10, -10) result4 = power (4.5, 1.5)
Ketika Anda menjalankan file, itu menampilkan −
result1 = 343 result2 = 7 result3 = 1.0000e-10 result4 = 9.5459
Fungsi Primer dan Sub-Fungsi
Fungsi selain fungsi anonim harus didefinisikan dalam file. Setiap file fungsi berisi fungsi primer yang diperlukan yang muncul pertama dan sejumlah fungsi opsional tambahan yang datang setelah fungsi primer dan digunakan olehnya.
Fungsi primer dapat dipanggil dari luar file yang mendefinisikannya, baik dari command line atau dari fungsi lain, tetapi sub-fungsi tidak dapat dipanggil dari command line atau fungsi lain, di luar file fungsi.
Sub-fungsi hanya terlihat oleh fungsi primer dan sub-fungsi lain dalam file fungsi yang mendefinisikannya.
Contoh
Mari kita tulis sebuah fungsi bernama quadratic yang akan menghitung akar dari persamaan kuadrat. Fungsi akan menerima tiga masukan, koefisien kuadrat, koefisien linier, dan konstanta. Ia akan mengembalikan akar.
File fungsi quadratic.m akan berisi fungsi primer quadratic dan sub-fungsi disc, yang menghitung diskriminan.
Buat file fungsi quadratic.m dan ketik kode berikut di dalamnya −
function [x1,x2] = quadratic(a,b,c) %this function returns the roots of % a quadratic equation. % It takes 3 input arguments % which are the co-efficients of x2, x and the %constant term % It returns the roots d = disc(a,b,c); x1 = (-b + d) / (2*a); x2 = (-b - d) / (2*a); end % end of quadratic function dis = disc(a,b,c) %function calculates the discriminant dis = sqrt(b^2 - 4*a*c); end % end of sub-function
Anda dapat memanggil fungsi di atas dari command prompt sebagai −
quadratic(2,4,-4)
MATLAB akan mengeksekusi pernyataan di atas dan mengembalikan hasil berikut −
ans = 0.7321
Fungsi Bersarang
Anda dapat mendefinisikan fungsi di dalam tubuh fungsi lain. Ini disebut fungsi bersarang. Sebuah fungsi bersarang berisi salah satu atau semua komponen dari fungsi lain.
Fungsi bersarang didefinisikan dalam cakupan fungsi lain dan mereka berbagi akses ke ruang kerja fungsi yang mengandungnya.
Sebuah fungsi bersarang mengikuti sintaks berikut −
function x = A(p1, p2) ... B(p2) function y = B(p3) ... end ... end
Contoh
Mari kita tulis ulang fungsi quadratic, dari contoh sebelumnya, namun kali ini fungsi disc akan menjadi fungsi bersarang.
Buat file fungsi quadratic2.m dan ketik kode berikut di dalamnya −
function [x1,x2] = quadratic2(a,b,c) function disc % nested function d = sqrt(b^2 - 4*a*c); end % end of function disc disc; x1 = (-b + d) / (2*a); x2 = (-b - d) / (2*a); end % end of function quadratic2
Anda dapat memanggil fungsi di atas dari command prompt sebagai −
quadratic2(2,4,-4)
MATLAB akan mengeksekusi pernyataan di atas dan mengembalikan hasil berikut −
ans = 0.73205
Fungsi Privat
Sebuah fungsi privat adalah fungsi primer yang hanya terlihat oleh kelompok terbatas fungsi lain. Jika Anda tidak ingin mengekspos implementasi fungsi, Anda dapat membuatnya sebagai fungsi privat.
Fungsi privat berada di subfolder dengan nama khusus private.
Mereka hanya terlihat oleh fungsi di folder induk.
Contoh
Mari kita tulis ulang fungsi quadratic. Kali ini, fungsi disc yang menghitung diskriminan, akan menjadi fungsi privat.
Buat subfolder bernama private di direktori kerja. Simpan file fungsi berikut disc.m di dalamnya −
function dis = disc(a,b,c) %function calculates the discriminant dis = sqrt(b^2 - 4*a*c); end % end of sub-function
Buat fungsi quadratic3.m di direktori kerja Anda dan ketik kode berikut di dalamnya −
function [x1,x2] = quadratic3(a,b,c) %this function returns the roots of % a quadratic equation. % It takes 3 input arguments % which are the co-efficient of x2, x and the %constant term % It returns the roots d = disc(a,b,c); x1 = (-b + d) / (2*a); x2 = (-b - d) / (2*a); end % end of quadratic3
Anda dapat memanggil fungsi di atas dari command prompt sebagai −
quadratic3(2,4,-4)
MATLAB akan mengeksekusi pernyataan di atas dan mengembalikan hasil berikut −
ans = 0.73205
Variabel Global
Variabel global dapat dibagikan oleh lebih dari satu fungsi. Untuk ini, Anda perlu mendeklarasikan variabel sebagai global di semua fungsi.
Jika Anda ingin mengakses variabel tersebut dari ruang kerja dasar, deklarasikan variabel tersebut di command line.
Deklarasi global harus terjadi sebelum variabel sebenarnya digunakan dalam fungsi. Praktik yang baik adalah menggunakan huruf kapital untuk nama variabel global untuk membedakannya dari variabel lain.
Contoh
Mari kita buat file fungsi bernama average.m dan ketik kode berikut di dalamnya −
function avg = average(nums) global TOTAL avg = sum(nums)/TOTAL; end
Buat file skrip dan ketik kode berikut di dalamnya −
global TOTAL; TOTAL = 10; n = [34, 45, 25, 45, 33, 19, 40, 34, 38, 42]; av = average(n)
Ketika Anda menjalankan file, itu akan menampilkan hasil berikut −
av = 35.500