2. Sintaks untuk mendefinisikan dan memanggil fungsi-M .
Teks fungsi M harus dimulai dengan header, diikuti oleh fungsi tubuh.
Header mendefinisikan "antarmuka" fungsi (cara Anda berinteraksi dengannya) dan disusun sebagai berikut:
function [ RetVal1, RetVal2, ] = FunctionName(par1, par2,)
Di sini, sebuah fungsi dideklarasikan (menggunakan fungsi "kata kunci" yang tidak diubah) dengan nama FunctionName, yang mengambil parameter input par1, par2,, dan menghasilkan (menghitung) nilai output (kembali) RetVal1, RetVal2
Dengan kata lain, mereka mengatakan argumen fungsi adalah variabel par1, par2,.., dan nilai fungsi (mereka harus dihitung) adalah variabel RetVal1, RetVal2, .
Nama fungsi yang ditentukan di header (dalam contoh yang diberikan - FunctionName) harus berfungsi sebagai nama file tempat teks fungsi akan ditulis. Untuk contoh ini ini akan menjadi file FunctionName.m (ekstensi nama harus tetap hanya terdiri dari satu huruf m). Ketidakcocokan antara nama fungsi dan nama file tidak diperbolehkan!
Badan fungsi terdiri dari perintah yang menghitung nilai kembalian. Badan fungsi mengikuti header fungsi. Header fungsi ditambah badan fungsi bersama-sama membentuk definisi fungsi.
Baik parameter input maupun nilai kembalian umumnya dapat berupa array (khususnya skalar) dengan berbagai dimensi dan ukuran. Misalnya, fungsi MatrProc1
fungsi [ A, B ] = MatrProc1(X1, X2, x)
A = X1 .* X2 * x;
B = X1 .* X2 + x;
dirancang untuk "menerima" dua larik dengan ukuran yang sama (tetapi arbitrer) dan satu skalar.
Array dalam badan fungsi ini pertama kali dikalikan elemen demi elemen, setelah itu hasil perkalian tersebut juga dikalikan dengan skalar. Dengan demikian, array keluaran pertama dihasilkan. Ukuran yang sama dari array input X1 dan X2 menjamin kelayakan operasi perkalian elemen-bijaksananya. Larik keluaran kedua (bernama B) berbeda dari larik pertama karena merupakan penjumlahan skalar (bukan perkalian).
Panggilan dibuat oleh kami fungsi dilakukan dari jendela perintah sistem MATLAB (atau dari teks fungsi lain) dengan cara biasa: nama fungsi ditulis, setelah itu yang berikut ini tercantum dalam tanda kurung dipisahkan dengan koma masukan aktual , dengan nilai-nilai yang perhitungannya akan dilakukan. Parameter sebenarnya dapat diberikan dengan angka (array angka), nama variabel yang sudah memiliki nilai tertentu, dan ekspresi.
Jika parameter aktual diberikan dengan nama beberapa variabel, maka perhitungan aktual akan dilakukan dengan salinan variabel ini (dan bukan dengan dirinya sendiri). Itu disebut transfer parameter berdasarkan nilai .
Di bawah ini adalah panggilan dari jendela perintah MATLAB ke fungsi MatrProc1 yang sebelumnya kita buat sebagai contoh.
Di sini, nama parameter input aktual (W1 dan W2) dan variabel di mana hasil perhitungan ditulis (Res1 dan Res2) tidak cocok dengan nama variabel serupa dalam definisi fungsi MatrProc1. Jelas, kecocokan tidak diperlukan, terutama karena parameter aktual input ketiga tidak memiliki nama sama sekali! Untuk menekankan kemungkinan perbedaan ini, nama parameter input dan nilai output dalam definisi fungsi disebut formal.
Dalam contoh pemanggilan fungsi MatrProc1, dari dua matriks input 2 x 2 persegi, dua matriks output Res1 dan Res2 diperoleh dengan dimensi yang persis sama:
Res1 =
9
6
6 6
Res2=
6
5
5 5
Dengan memanggil fungsi
MatrProc1 = MatrProc1([ 1 2 3; 4 5 6 ], [ 7 7 7; 2 2 2 ], 1);
dengan dua array input berukuran 2x3, kita mendapatkan dua matriks output berukuran 2x3. Artinya, fungsi MatrProc1 yang sama dapat memproses parameter input dengan berbagai ukuran dan dimensi! Anda dapat menerapkan fungsi ini ke skalar alih-alih array (ini masih array 1x1).
Sekarang pertimbangkan pertanyaan apakah mungkin menggunakan fungsi ini sebagai bagian dari ekspresi dengan cara yang sama seperti yang dilakukan dengan fungsi yang mengembalikan nilai tunggal? Ternyata ini bisa dilakukan, dan nilai pertama yang dikembalikan oleh fungsi digunakan sebagai nilai fungsi yang digunakan untuk perhitungan selanjutnya. Jendela MATLAB berikut mengilustrasikan hal ini:
Saat dipanggil dengan parameter 1,2,1, fungsi MatrProc1 mengembalikan dua nilai: 2 dan 3. Untuk digunakan dalam ekspresi, yang pertama digunakan.
Karena fungsi apa pun dapat dipanggil dengan menulis ekspresi arbitrer di jendela perintah MATLAB, selalu mungkin untuk membuat kesalahan yang terkait dengan ketidakcocokan antara jenis parameter aktual dan formal. MATLAB tidak melakukan pemeriksaan apapun pada subjek ini, tetapi hanya mentransfer kontrol ke fungsi. Akibatnya, situasi yang salah dapat terjadi. Untuk menghindari (jika mungkin) terjadinya situasi yang salah seperti itu, disarankan untuk memeriksa parameter input dalam teks fungsi-M. Misalnya, dalam fungsi MatrProc1, mudah untuk mendeteksi situasi ketika ukuran parameter input pertama dan kedua berbeda. Menulis kode seperti itu membutuhkan konstruksi kontrol yang belum kita jelajahi. Saatnya untuk mulai mempelajarinya!
Bahasa komputasi teknis
Jutaan insinyur dan ilmuwan di seluruh dunia menggunakan MATLAB ® untuk menganalisis dan mengembangkan sistem dan produk yang mengubah dunia kita. Bahasa matriks MATLAB adalah cara paling alami di dunia untuk mengekspresikan matematika komputasi. Grafik yang disematkan memudahkan untuk memvisualisasikan dan memahami data. Lingkungan desktop mendorong eksperimen, eksplorasi, dan penemuan. Alat dan kemampuan MATLAB ini semuanya diuji secara ketat dan dirancang untuk bekerja bersama.
MATLAB membantu Anda mewujudkan ide-ide Anda di luar desktop. Anda dapat menjalankan eksplorasi pada set data besar dan menskalakan ke cluster dan cloud. Kode MATLAB dapat diintegrasikan dengan bahasa lain, memungkinkan Anda untuk menerapkan algoritme dan aplikasi di seluruh sistem web, perusahaan, dan industri.
Pelajari dasar-dasar MATLAB
Sintaks, pengindeksan dan pemrosesan array, tipe data, operator
Impor dan ekspor data, termasuk file besar; pra-pemrosesan data, visualisasi, dan penelitian
Aljabar linier, diferensiasi dan integrasi, transformasi Fourier dan matematika lainnya
Grafik, gambar, animasi 2D dan 3D
Skrip, fungsi, dan kelas
Pengembangan aplikasi dengan Perancang Aplikasi, Alur Kerja yang Dapat Diprogram, atau PANDUAN
Debugging dan pengujian, organisasi proyek besar, integrasi dengan sistem kontrol versi, pengemasan kotak peralatan
Saat ini, banyak bahasa pemrograman yang digunakan untuk pemrograman sistem CNC, yang didasarkan pada bahasa universal ISO 7 bit. Namun, setiap pabrikan menyumbangkan fiturnya sendiri, yang diimplementasikan melalui fungsi persiapan (kode G) dan tambahan (kode M).Fungsi dengan alamat G disebut persiapan, mereka menentukan kondisi kerja mesin yang terkait dengan pemrograman geometri gerakan pahat. Penjelasan rinci tentang kode-G dapat ditemukan di bab kode 7-bit ISO.
Dalam bab ini, kita akan membahas secara rinci tujuan dari fungsi bantu.
Fungsi dengan alamat M disebut bantu(dari eng. Miscellaneous) dan dirancang untuk mengontrol berbagai mode dan perangkat mesin.
Fungsi bantu dapat digunakan sendiri atau dalam kombinasi dengan alamat lain, misalnya, blok di bawah ini memasang alat nomor 1 pada spindel.
N10 T1 M6, di mana
T1- alat nomor 1;
M6– penggantian alat;
Dalam hal ini, di bawah perintah M6 pada dudukan CNC, ada serangkaian perintah yang menyediakan proses penggantian pahat:
Pindahkan alat untuk mengubah posisi;
- mematikan kecepatan spindel;
- pergerakan alat yang dipasang di toko;
- penggantian alat;
Penggunaan kode-M diperbolehkan di blok dengan gerakan pahat, misalnya, pada baris di bawah ini, pendinginan akan menyala (M8) bersamaan dengan dimulainya gerakan pemotong.
N10 X100 Y150 Z5 F1000 M8
Kode M yang menghidupkan perangkat mesin memiliki kode M berpasangan yang mematikan perangkat itu. Sebagai contoh,
M8- nyalakan pendingin M9- matikan pendingin;
M3- nyalakan kecepatan spindel, M5- matikan belokan;
Hal ini diperbolehkan untuk menggunakan beberapa perintah M dalam satu frame.
Dengan demikian, semakin banyak perangkat yang dimiliki mesin, semakin banyak perintah M yang akan terlibat dalam kontrolnya.
Secara konvensional, semua fungsi tambahan dapat dibagi menjadi: standar dan spesial. Fungsi bantu standar digunakan oleh pabrikan CNC untuk mengontrol perangkat yang tersedia di setiap mesin (spindel, pendinginan, penggantian pahat, dll.). Sedangkan mode khusus diprogram pada satu mesin tertentu atau sekelompok mesin dari model tertentu (kepala pengukur hidup / mati, sumbu putar penjepit / pelepasan penjepit).
Gambar di atas menunjukkan spindel putar dari mesin multi-sumbu. Untuk meningkatkan kekakuan dalam pemesinan posisional, alat berat ini dilengkapi dengan klem sumbu putar, yang dikendalikan oleh kode M: M10/M12– nyalakan klem untuk sumbu A dan C. M11/M13- matikan klem. Pada peralatan lain, produsen mesin dapat mengonfigurasi perintah ini untuk mengontrol perangkat lain.
Fungsi tambahan khusus dijelaskan oleh produsen mesin dalam dokumentasi teknis masing-masing.
Voskoboynikov B.S., Mitrovich V.L. Kamus Rusia-Inggris tentang teknik mesin dan otomatisasi produksi. Kamus Rusia-Inggris tentang teknik mesin dan otomatisasi manufaktur. 2003
Lebih banyak arti dari kata ini dan terjemahan Inggris-Rusia, Rusia-Inggris untuk kata «M-FUNCTIONS» dalam kamus.
Contoh penting dari kelas tertutup adalah kelas fungsi monoton. Fakta bahwa fungsi monoton membentuk kelas tertutup akan dibuktikan nanti, tetapi untuk sekarang mari kita berkenalan dengan apa itu fungsi Boolean monoton.
Pada himpunan B=0,1, kita perkenalkan orde lengkap: kita asumsikan bahwa 0<1. Нам придётся иметь дело с функциями от n переменных, поэтому полезно ввести частичное упорядочение в булевом пространстве В n .
Definisi 1. Biarkan b \u003d (b 1 b 2 ... b n) dan c \u003d (dalam 1 dalam 2 ... dalam n) - elemen dari B n. Kita akan mengatakan bahwa b mendahului (kurang dari) c, dan menyatakan bc jika b k dalam k untuk k=1,2,…,n, dan setidaknya untuk satu k terdapat pertidaksamaan yang tegas.
Contoh. b=(001100), c=(001110); b 1 \u003d dalam 1, b 2 \u003d dalam 2, b 3 \u003d dalam 3, b 4 \u003d dalam 4, b 5<в 5 , б 6 =в 6 . Значит, бв.
Definisi 2. Dua vektor b dan c disebut sebanding jika bc atau cb. Jika tidak, vektor dianggap tidak dapat dibandingkan. Urutan seperti itu disebut parsial karena tidak semua elemen B n dapat dibandingkan. Jadi jangan bingung sebagian pesan pada B n dengan menyelesaikan pemesanan yang digunakan saat menentukan fungsi Boolean dengan tabel atau vektor nilainya.
Berikut adalah beberapa contoh vektor tak tertandingi.
1. b = (1100), c = (0110). Di sini b 1 > dalam 1, b 2 \u003d dalam 2, b 3< 3 , б 4 =в 4 .
2. b = (01), c = (10). Di sini b 1< в 1 , б 2 >dalam 2 .
Dapat dilihat dari contoh-contoh bahwa himpunan tak dapat dibandingkan adalah himpunan yang didalamnya terdapat komponen bertipe (01) dalam satu himpunan dan (10) pada himpunan lain pada tempat yang bersesuaian.
Definisi 3. Suatu fungsi f(х 1 ,…,х n) disebut monoton (termasuk kelas M) jika untuk dua himpunan yang sebanding b, c B n dari b mendahului c, maka f(b) tidak lebih dari f(), yaitu bc f(b) f(c).
Jika ada sepasang himpunan yang bc, tetapi f(b) > f(c), maka fungsi f(x1,…,xn) adalah nonmonoton Dengan analogi dengan fungsi kontinu yang dipelajari dalam analisis matematis, fungsi aljabar logika dapat disebut tidak berkurang. Tapi karena kita tidak akan berurusan dengan fungsi yang tidak naik, kita bisa membicarakannya kesamaan..
Contoh 20. Fungsi identitas f(x) = x monoton karena b=(0) (1)=c dan f(b)=0< 1=f()
Contoh 21. f(x,y) = xy adalah fungsi monoton.
Memang, set (01) dan (10) tidak dapat dibandingkan, kami tidak akan memperhitungkannya. Untuk set lain kami memiliki:
(00)-- (11) dan f(0,0)=0 1= f(1,1).
(01) (11) dan f(0,1)=1 1= f(1,1).
(10)-- (11) dan f(1,0)=1 1= f(1,1).
Kami memastikan bahwa xy sama dengan 0 hanya pada himpunan (00), yang mendahului semua himpunan lainnya, sehingga kondisi monotonitas fungsi terpenuhi.
Contoh 22. f(x,y)=x&y adalah fungsi monoton, karena sama dengan 1 hanya pada himpunan (11), yang didahului oleh yang lainnya.
Contoh 23. Konstanta 0 dan 1 adalah fungsi monoton, karena untuk setiap himpunan akan menjadi f(b)=f(c).
Contoh 24. f(x)=x" adalah fungsi tidak monoton, karena untuk b=(0) dan c=(1) kita memiliki bc, tetapi f(b)=1> 0=f(c).
Contoh 25. f(x,y)=xy adalah fungsi non-monoton.
Betulkah,
(00)---- (01) dan f(0,0)=1 1=f(1,1) ,
(10)---- (11) dan f(1,0)=0 1=f(1,1).
Tetapi dengan (00) ---- (10) kita peroleh
f(0,0)=1 > 0=f(1,0).
Kondisi monotonisitas fungsi tidak terpenuhi!
Contoh 26. Tentukan monotonisitas dari fungsi penambahan modulo 2:
Set (01) dan (10) tidak dapat dibandingkan, kami tidak akan memperhitungkannya.
Untuk set lain kami memiliki:
(00) (01) dan f(0,0)=0 1= f(0,1).
(00)-- (10) dan f(0,0)=0 1= f(1,0).
(00) (11) dan f(0,0)=0 0= f(1,1).
(10) (11) dan f(1,0)=1 > 0= f(1,1).
Kondisi terakhir menyatakan bahwa fungsi x + y tidak monoton.