MATLAB

bilgipedi.com.tr sitesinden
MATLAB
Matlab Logo.png
Dosya:MATLAB R2015b.png
Windows 10'a kurulmuş MATLAB R2015b sürümü
Geliştirici(ler) MathWorks
Güncel sürüm R2020b / 17 Eylül 2020 (2 yıl önce)
Programlama dili C/C++, MATLAB
İşletim sistemi Windows, macOS ve Linux
Platform IA-32, x86-64
Tür Teknik hesaplama
Lisans Sahipli yazılım/Ticari yazılım
Resmî sitesi MATLAB ana sayfa
MATLAB (programlama dili)
Paradigması Çok paradigmalı: emirli, yordamsal, nesne yönelimli, sıralı, fonksiyonel
İlk çıkışı 1970 sonları
Tasarımcı Cleve Moler
Geliştirici MathWorks
Kararlı sürüm

9.9 (R2020b)

(17 Eylül 2020 (2 yıl önce))
Tip sistemi Dinamik, zayıf
Etkilendikleri
  • APL
  • EISPACK
  • LINPACK
  • PL/0
  • Speakeasy
Etkiledikleri
  • Julia
  • Octave
  • Scilab
  • INTLAB
Olağan dosya uzantıları .m, .p, .mex*, .mat, .fig, .mlx, .mlapp, .mltbx, .mlappinstall, .mlpkginstall

MATLAB (matrix laboratory), çok paradigmalı sayısal hesaplama yazılımı ve dördüncü nesil programlama dilidir. Sahipli bir programlama dili olan MATLAB, MathWorks tarafından geliştirilmektedir. MATLAB kullanıcıya, matris işleme, fonksiyon ve veri çizme, algoritma uygulama, kullanıcı arayüzü oluşturma, C, C++, Java, ve Fortran gibi diğer dillerde yazılmış programlarla arabağlama imkânı tanır.

MATLAB, öncelikli olarak sayısal işleme yönelik üretilmiş olmasına rağmen, isteğe bağlı olarak sembolik hesaplama yapabilen MuPAD sembolik motorunu kullanır. Ek paket, dinamik ve gömülü sistemler için Simulink'i, grafiksel çoklu alan simülasyonunu ve model tabanlı tasarımı ekler.

2004'te, MATLAB akademik ve endüstriyel alandaki kullanıcı sayısı bir milyon civarındaydı. MATLAB kullanıcıları mühendislik, bilim, ve ekonomi gibi çeşitli alanlardan gelmektedir. MATLAB, yaygın olarak akademik ve araştırma kurumlarında olduğu kadar endüstriyel işletmelerde de çok kullanılmaktadır.

Tarihçe

Kökenleri

MATLAB, matematikçi ve bilgisayar programcısı Cleve Moler tarafından icat edilmiştir. MATLAB fikri 1960'lardaki doktora tezine dayanıyordu. Moler, New Mexico Üniversitesi'nde matematik profesörü oldu ve MATLAB'ı öğrencileri için hobi olarak geliştirmeye başladı. MATLAB'in ilk doğrusal cebir programlamasını 1967 yılında bir zamanlar tez danışmanı olan George Forsythe ile birlikte geliştirdi. Bunu 1971 yılında doğrusal denklemler için Fortran kodu takip etti.

Başlangıçta (1.0 sürümünden önce) MATLAB "bir programlama dili değildi; basit bir etkileşimli matris hesaplayıcısıydı. Program yoktu, araç kutusu yoktu, grafik yoktu. Ve ODE'ler ya da FFT'ler de yoktu."

MATLAB'in ilk erken versiyonu 1970'lerin sonunda tamamlandı. Yazılım ilk kez Şubat 1979'da Kaliforniya'daki Naval Postgraduate School'da halka açıklanmıştır. MATLAB'ın ilk sürümleri, önceden oluşturulmuş 71 fonksiyona sahip basit matris hesaplayıcılardı. O dönemde MATLAB üniversitelere ücretsiz olarak dağıtılıyordu. Moler ziyaret ettiği üniversitelere kopyalarını bırakıyordu ve yazılım üniversite kampüslerinin matematik bölümlerinde güçlü bir takipçi kitlesi geliştirdi.

1980'lerde Cleve Moler, John N. Little ile tanıştı. MATLAB'ı C dilinde yeniden programlamaya ve o dönemde ana bilgisayarların yerini alan IBM masaüstü bilgisayarları için pazarlamaya karar verdiler. John Little ve programcı Steve Bangert MATLAB'ı C dilinde yeniden programladı, MATLAB programlama dilini yarattı ve araç kutuları için özellikler geliştirdi.

MATLAB, ilk olarak kontrol mühendisliğindeki araştırmacılar ve uygulayıcılar tarafından kabul edildi. Ayrıca şu an eğitim alanında da kullanılmaktadır, özellikle doğrusal cebir, sayısal analiz öğretiminde ve görüntü işleme bilim adamları arasında popülerdir.

Ticari gelişim

MATLAB ilk olarak 1984 yılında Las Vegas'taki Otomatik Kontrol Konferansı'nda ticari bir ürün olarak piyasaya sürüldü. Yazılımı geliştirmek için MathWorks, Inc. kuruldu ve MATLAB programlama dili piyasaya sürüldü. İlk MATLAB satışı ertesi yıl Massachusetts Teknoloji Enstitüsü'nden Nick Trefethen'in on kopya satın almasıyla gerçekleşti.

1980'lerin sonunda, MATLAB'ın birkaç yüz kopyası öğrenci kullanımı için üniversitelere satılmıştı. Yazılım, büyük ölçüde çeşitli alanlardaki uzmanlar tarafından özel matematiksel görevleri yerine getirmek için oluşturulan araç kutuları sayesinde popüler hale geldi. Araç kutularının birçoğu, MATLAB'ı akademide kullanan Stanford öğrencilerinin daha sonra yazılımı özel sektöre taşımaları sonucunda geliştirildi.

Zaman içinde MATLAB, Digital Equipment Corporation, VAX, Sun Microsystems tarafından oluşturulan ilk işletim sistemleri ve Unix PC'ler için yeniden yazıldı. Sürüm 3 1987'de piyasaya sürüldü. İlk MATLAB derleyicisi Stephen C. Johnson tarafından 1990'larda geliştirilmiştir. Johnson tarafından 1990'larda geliştirilmiştir.

2000 yılında MathWorks, MATLAB 6'da doğrusal cebir için Fortran tabanlı bir kütüphane ekledi ve yazılımın C dilindeki orijinal LINPACK ve EISPACK alt yordamlarının yerini aldı. MATLAB'ın Paralel Hesaplama Araç Kutusu 2004 Süper Bilgisayar Konferansı'nda piyasaya sürüldü ve 2010 yılında grafik işleme birimleri (GPU'lar) için destek eklendi.

Yakın geçmiş

Yazılımda özellikle bazı büyük değişiklikler 2012'de 8. sürüm ile yapıldı. Kullanıcı arayüzü yeniden düzenlendi ve Simulink'in işlevselliği genişletildi. 2016 yılına gelindiğinde MATLAB, MATLAB Live Editor not defteri ve diğer özellikler de dahil olmak üzere çeşitli teknik ve kullanıcı arayüzü iyileştirmeleri sunmuştur.

Sözdizimi

MATLAB uygulaması, MATLAB programlama dili etrafında oluşturulmuştur. MATLAB uygulamasının yaygın kullanımı, "Komut Penceresi "nin etkileşimli bir matematiksel kabuk olarak kullanılmasını veya MATLAB kodu içeren metin dosyalarının yürütülmesini içerir.

Değişkenler

Değişkenler, = atama operatörü kullanılarak tanımlanır. MATLAB zayıf ve dinamik tipli bir programlama dilidir. Zayıf tipli bir dildir çünkü tipler dolaylı olarak dönüştürülür. Dinamik tipli bir dildir çünkü değişkenler, değişken türü yazılmadan da atanabilirler, sembolik nesne olarak kabul edilip işlenirler, ve tipleri değiştirilebilir. Değişkenler, sabitlerden, diğer değişkenlerin değerlerini içeren işlemlerden, ya da bir fonksiyonun çıkışından tanımlanabilir. Örneğin:

>> x = 17
x =
 17
>> x = 'hat'
x =
hat
>> y = x + 0
y =
       104        97       116
>> x = [3*4, pi/2]
x =
   12.0000    1.5708
>> y = 3*sin(x)
y =
   -1.6097    3.0000 <span title="Kaynak: Türkçe Vikipedi, Bölüm &quot;Değişkenler&quot;" class="plainlinks">[https://tr.wikipedia.org/wiki/MATLAB#Değişkenler <span style="color:#dddddd">ⓘ</span>]</span>

>> x = 'şapka' x = Şapka

>> x = [3*4, pi/2] x =

  12.0000 1.5708 

>> y = 3*sin(x) y =

  -1.6097 3.0000

</syntaxhighlight>

Vektörler ve matrisler

Basit bir dizi şu iki nokta üst üste sözdizimi kullanılarak tanımlanır: initial:increment:terminator. Örneğin:

>> dizi = 1:2:9
dizi =
 1 3 5 7 9

1, 3, 5, 7 ve 9 değerlerinden oluşan bir dizi olan dizi adlı bir değişken tanımlar (veya dizi adlı mevcut bir değişkene yeni bir değer atar). Yani, dizi 1'den (başlangıç değeri) başlar, her adımda bir önceki değerden 2 (artış değeri) artar ve 9'a (sonlandırıcı değer) ulaştığında (veya aşmak üzere olduğunda) durur.

Artış değeri aslında bu sözdiziminin dışında bırakılabilir (iki nokta üst üste işaretlerinden biriyle birlikte) ve varsayılan değer olarak 1 kullanılabilir.

>> ari = 1:5
ari =
 1 2 3 4 5

ari adlı değişkene 1, 2, 3, 4 ve 5 değerlerini içeren bir dizi atar, çünkü varsayılan değer olan 1 artış olarak kullanılır.

İndeksleme, C, C++ ve Java gibi diğer programlama dillerinde yaygın olarak kullanılan sıfır tabanlı indekslemenin aksine, matematikte matrisler için olağan kural olan bir tabanlıdır.

Matrisler, bir satırın öğelerini boşluk veya virgülle ayırarak ve her satırı sonlandırmak için noktalı virgül kullanarak tanımlanabilir. Eleman listesi köşeli parantez [] ile çevrelenmelidir. Parantezler (), elemanlara ve alt dizilere erişmek için kullanılır (ayrıca bir fonksiyon argüman listesini belirtmek için de kullanılır).

>> A = [16, 3, 2, 13 ; 5, 10, 11, 8 ; 9, 6, 7, 12 ; 4, 15, 14, 1]
A =
 16 3 2 13
  5 10 11 8
  9 6 7 12
  4 15 14 1 <span title="Kaynak: İngilizce Vikipedi, Bölüm &quot;Vectors and matrices&quot;" class="plainlinks">[https://en.wikipedia.org/wiki/MATLAB#Vectors_and_matrices <span style="color:#dddddd">ⓘ</span>]</span>

>> A(2,3)
ans =
 11

İndeks kümeleri [2, 3, 4] olarak değerlendirilen 2:4 gibi ifadelerle belirtilebilir. Örneğin, 2'den 4'e kadar olan satırlardan ve 3'ten 4'e kadar olan sütunlardan alınan bir alt matris şu şekilde yazılabilir:

>> A(2:4,3:4)
ans =
 11 8
 7 12
 14 1

eye fonksiyonu kullanılarak n boyutunda bir kare kimlik matrisi oluşturulabilir ve sırasıyla zeros ve ones fonksiyonları kullanılarak sıfır veya bir içeren herhangi bir boyuttaki matrisler oluşturulabilir.

>> eye(3,3)
ans =
 1 0 0
 0 1 0
 0 0 1 <span title="Kaynak: İngilizce Vikipedi, Bölüm &quot;Vectors and matrices&quot;" class="plainlinks">[https://en.wikipedia.org/wiki/MATLAB#Vectors_and_matrices <span style="color:#dddddd">ⓘ</span>]</span>

>> sıfırlar(2,3)
ans =
 0 0 0
 0 0 0 <span title="Kaynak: İngilizce Vikipedi, Bölüm &quot;Vectors and matrices&quot;" class="plainlinks">[https://en.wikipedia.org/wiki/MATLAB#Vectors_and_matrices <span style="color:#dddddd">ⓘ</span>]</span>

>> ones(2,3)
ans =
 1 1 1
 1 1 1

Bir vektörün veya matrisin transpozesi ya transpose fonksiyonu ile ya da matrisin sonuna nokta-prime eklenerek yapılır (nokta olmadan, prime karmaşık diziler için eşlenik transpozeyi gerçekleştirecektir):

>> A = [1 ; 2], B = A.', C = transpose(A)
A =
     1
     2
B =
     1 2
C =
     1 2 <span title="Kaynak: İngilizce Vikipedi, Bölüm &quot;Vectors and matrices&quot;" class="plainlinks">[https://en.wikipedia.org/wiki/MATLAB#Vectors_and_matrices <span style="color:#dddddd">ⓘ</span>]</span>

>> D = [0, 3; 1, 5], D.'
D =
     0 3
     1 5
ans =
     0 1
     3 5

Çoğu fonksiyon dizileri girdi olarak kabul eder ve her bir eleman üzerinde eleman bazında işlem yapar. Örneğin, mod(2*J,n) J'deki her öğeyi 2 ile çarpacak ve ardından her öğeyi n modülüne indirgeyecektir. MATLAB standart for ve while döngüleri içerir, ancak (R gibi diğer benzer uygulamalarda olduğu gibi) vektörel gösterimin kullanılması teşvik edilir ve genellikle yürütülmesi daha hızlıdır. magic.m fonksiyonundan alıntılanan aşağıdaki kod, n'nin tek değerleri için bir sihirli kare M oluşturur (MATLAB fonksiyonu meshgrid burada 1:n içeren kare matrisler I ve J oluşturmak için kullanılır):

[J,I] = meshgrid(1:n);
A = mod(I + J - (n + 3) / 2, n);
B = mod(I + 2 * J - 2, n);
M = n * A + B + 1; <span title="Kaynak: İngilizce Vikipedi, Bölüm &quot;Vectors and matrices&quot;" class="plainlinks">[https://en.wikipedia.org/wiki/MATLAB#Vectors_and_matrices <span style="color:#dddddd">ⓘ</span>]</span>

Yapılar

MATLAB, yapısal veri tiplerine sahiptir. MATLAB dizilerindeki bütün değişkenlerden itibaren, daha uygun bir adı "structure array"dır, dizinin bütün elemanları aynı ada sahiptir. Buna ek olarak, MATLAB dinamik alan adlarını destekler (look-up alan adları, alan manipülasyonları, vb.). Fakat maalesef, MATLAB JIT (Just In Time) MATLAB yapılarını desteklemez, bu yüzden çeşitli yapısal değişkenlerin sadece basit bir paketi bile maliyetli olacaktır.

Fonksiyonlar

Bir MATLAB fonksiyonu oluştururken, dosyanın adı dosyadaki ilk fonksiyonun adıyla eşleşmelidir. Geçerli fonksiyon adları alfabetik bir karakterle başlar ve harfler, sayılar veya alt çizgiler içerebilir. Değişkenler ve fonksiyonlar büyük/küçük harfe duyarlıdır.

gbImage = imread('ecg.png');
grayImage = rgb2gray(rgbImage); % indekslenmemiş görüntüler için
level = graythresh(grayImage); % görüntüyü ikiliye dönüştürmek için eşik, 
binaryImage = im2bw(grayImage, level); 
Kırmızı, yeşil ve mavi renk kanallarını tek tek çıkarın.
redChannel = rgbImage(:, :, 1);
greenChannel = rgbImage(:, :, 2);
blueChannel = rgbImage(:, :, 3);
Siyah kısımları saf kırmızı yapın.
redChannel(~binaryImage) = 255;
greenChannel(~binaryImage) = 0;
blueChannel(~binaryImage) = 0;
Şimdi çıktı görüntüsünü oluşturmak için yeniden birleştirin.
rgbImageOut = cat(3, redChannel, greenChannel, blueChannel);
imshow(rgbImageOut); <span title="Kaynak: İngilizce Vikipedi, Bölüm &quot;Functions&quot;" class="plainlinks">[https://en.wikipedia.org/wiki/MATLAB#Functions <span style="color:#dddddd">ⓘ</span>]</span>

Fonksiyon kolları

MATLAB, fonksiyon tanıtan kollar tarafından lambda-calculus elemanlarını veya referans fonksiyonlarını destekler, .m uzantılı ya da uzantısı olmayan dosyaları/yuvalanmış işlevleri, her ikisini de destekler.

MATLAB, .m dosyalarında veya anonim / iç içe geçmiş işlevlerde uygulanan işlev tutamaçlarını veya işlev referanslarını tanıtarak lambda hesabının öğelerini destekler.

Sınıflar ve nesne yönelimli programlama

MATLAB, sınıflar, kalıtım, sanal gönderim, paketler, pass-by-value semantiği ve pass-by-reference semantiği dahil olmak üzere nesne yönelimli programlamayı destekler. Bununla birlikte, sözdizimi ve çağrı kuralları diğer dillerden önemli ölçüde farklıdır. MATLAB, sınıfın bir üst sınıf olarak handle'a sahip olup olmamasına (referans sınıfları için) veya olmamasına (değer sınıfları için) bağlı olarak değer sınıflarına ve referans sınıflarına sahiptir.

Metot çağrısı davranışı değer ve referans sınıfları arasında farklıdır. Örneğin, bir yöntem çağrısı:

object.method();

yalnızca nesne bir referans sınıfının örneği ise nesnenin herhangi bir üyesini değiştirebilir, aksi takdirde değer sınıfı yöntemleri nesneyi değiştirmesi gerekiyorsa yeni bir örnek döndürmelidir.

Aşağıda basit bir sınıf örneği verilmiştir:

classdef Merhaba
    yöntemleri
        function greet(obj)
            disp('Merhaba!')
        end
    son
son <span title="Kaynak: İngilizce Vikipedi, Bölüm &quot;Classes and object-oriented programming&quot;" class="plainlinks">[https://en.wikipedia.org/wiki/MATLAB#Classes_and_object-oriented_programming <span style="color:#dddddd">ⓘ</span>]</span>

Bu, hello.m adlı bir dosyaya konulduğunda aşağıdaki komutlarla çalıştırılabilir:

>> x = Hello();
>> x.greet();
Merhaba! <span title="Kaynak: İngilizce Vikipedi, Bölüm &quot;Classes and object-oriented programming&quot;" class="plainlinks">[https://en.wikipedia.org/wiki/MATLAB#Classes_and_object-oriented_programming <span style="color:#dddddd">ⓘ</span>]</span>

Grafik ve grafiksel kullanıcı arayüzü programlama

MATLAB, geliştirme uygulamalarıyla beraber grafiksel kullanıcı arayüzü özelliklerini de destekler. Ayrıca graph-plotting özellikleri de sıkıca entegre edilmiştir. Örneğin plot fonksiyonunda 2 vektör ile grafik üretilebilir. x ve y. Kod:

x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)

Ardından sinüs fonksiyonu ile şekiller üretilebilir: Matlab plot sin.svg

MATLAB programı 3 boyutlu grafikler oluşturmak için surf, plot3 ya da mesh fonksiyonlarını kullanır.

[X,Y] = meshgrid(-10:0.25:10,-10:0.25:10);
f = sinc(sqrt((X/pi).^2+(Y/pi).^2));
mesh(X,Y,f);
axis([-10 10 -10 10 -0.3 1])
xlabel('{\bfx}')
ylabel('{\bfy}')
zlabel('{\bfsinc} ({\bfR})')
hidden off
   
[X,Y] = meshgrid(-10:0.25:10,-10:0.25:10);
f = sinc(sqrt((X/pi).^2+(Y/pi).^2));
surf(X,Y,f);
axis([-10 10 -10 10 -0.3 1])
xlabel('{\bfx}')
ylabel('{\bfy}')
zlabel('{\bfsinc} ({\bfR})') <span title="Kaynak: Türkçe Vikipedi, Bölüm &quot;Grafik ve grafiksel kullanıcı arayüzü programlama&quot;" class="plainlinks">[https://tr.wikipedia.org/wiki/MATLAB#Grafik_ve_grafiksel_kullanıcı_arayüzü_programlama <span style="color:#dddddd">ⓘ</span>]</span>
Bu kod sinüs fonksiyonu ile normalleştirilmemiş 2 boyutlu 3D wireframe grafiğini üretir:     Bu kod sinüs fonksiyonu ile normalleştirilmemiş 2 boyutlu 3D surface grafiğini üretir:
MATLAB mesh sinc3D.svg     MATLAB surf sinc3D.svg

MATLAB'da GUI tasarım araçlarıyla (GUIDE) grafiksel kullanıcı arayüzleri oluşturulabilir.

Sözdizim hatası

MATLAB ve diğer diller

MATLAB, C veya Fortran programlama dillerinde yazılmış fonksiyonları ve alt rutinleri çağırabilir. MATLAB veri tiplerinin geçirilmesine ve döndürülmesine izin veren bir sarmalayıcı fonksiyon oluşturulur. MEX dosyaları (MATLAB çalıştırılabilirleri), bu tür işlevlerin derlenmesiyle oluşturulan dinamik olarak yüklenebilir nesne dosyalarıdır. 2014'ten beri Python ile artan iki yönlü arayüz ekleniyordu.

Perl, Java, ActiveX veya .NET ile yazılmış kütüphaneler MATLAB'den doğrudan çağrılabilir ve birçok MATLAB kütüphanesi (örneğin XML veya SQL desteği) Java veya ActiveX kütüphaneleri etrafında sarmalayıcılar olarak uygulanır. MATLAB'ı Java'dan çağırmak daha karmaşıktır, ancak MathWorks tarafından ayrı olarak satılan bir MATLAB araç kutusu ile veya JMI (Java-to-MATLAB Interface) adı verilen belgelenmemiş bir mekanizma kullanılarak yapılabilir (bu, JMI olarak da adlandırılan ilgisiz Java Metadata Interface ile karıştırılmamalıdır). Java için resmi MATLAB API'si 2016 yılında eklenmiştir.

MathWorks'ten temin edilebilen MuPAD tabanlı Sembolik Matematik Araç Kutusuna alternatif olarak MATLAB, Maple veya Mathematica'ya bağlanabilir.

MathML'yi içe ve dışa aktarmak için kütüphaneler de mevcuttur.

MATLAB en popüler ticari sayısal hesaplama yazılım paketi olmakla birlikte, açık kaynak hesaplama dili GNU Octave, istatistik programlama dili R, hesaplama ortamı Maple ve hesaplama dili Julia gibi başka alternatifler de mevcuttur.

MathML giriş ve çıkışları için kütüphanelerin bulunması gerekmektedir.

Çin'den Çekilme

2020 yılında Çin devlet medyası, MATLAB'ın ABD yaptırımlarının bir sonucu olarak iki Çin üniversitesinden hizmetlerini geri çektiğini bildirdi ve buna açık kaynaklı alternatiflerin kullanımının artırılması ve yerli alternatiflerin geliştirilmesiyle yanıt verileceğini söyledi.

Sürüm geçmişi

MATLAB yılda iki kez güncellenir. Yeni özellikler ve diğer iyileştirmelere ek olarak, her sürümde yeni hata düzeltmeleri ve daha küçük değişiklikler vardır.

Sürüm Serbest bırakma adı Sayı Birlikte verilen JVM Yıl Çıkış tarihi Notlar
1.0 1984
2 1986
3 1987 İlk Matlab araç kutusu tanıtıldı; adi diferansiyel denklemler için destek eklendi.
3.5 1990 DOS üzerinde çalışıyordu ancak en az 386 işlemci gerektiriyordu; bir matematik yardımcı işlemcisine ihtiyaç duyuyordu.
4 1992 Windows 3.1x ve Macintosh'ta çalıştırıldı.
4.2c 1994 Windows 3.1x'te çalıştırıldı; matematik yardımcı işlemcisi gerekiyordu.
5.0 Cilt 8 1996 Aralık 1996 Tüm platformlarda birleştirilmiş sürümler.
5.1 Cilt 9 1997 Mayıs 1997
5.1.1 R9.1
5.2 R10 1998 Mart 1998 Klasik Mac'lerde çalışan son sürüm.
5.2.1 R10.1
5.3 R11 1999 Ocak 1999
5.3.1 R11.1 Kasım 1999
6.0 R12 12 1.1.8 2000 Kasım 2000 Birlikte verilen Java sanal makinesi (JVM) ile ilk sürüm.
6.1 R12.1 1.3.0 2001 Haziran 2001 Windows 95 için son sürüm.
6.5 R13 13 1.3.1 2002 Temmuz 2002
6.5.1 R13SP1 2003
6.5.2 R13SP2 Windows 98, Windows ME, IBM/AIX, Alpha/TRU64 ve SGI/IRIX için son sürüm.
7 R14 14 1.4.2 2004 Haziran 2004 Anonim ve iç içe fonksiyonlar tanıtıldı; Mac için yeniden tanıtıldı (Mac OS X altında).
7.0.1 R14SP1 Ekim 2004
R14SP1+ 2004 Kasım 2004 Paralel Hesaplama Araç Kutusu tanıtıldı.
7.0.4 R14SP2 1.5.0 2005 7 Mart 2005 Bellek eşlemeli dosyalar için destek eklendi.
7.1 R14SP3 1.5.0 1 Eylül 2005 Windows XP 64-bit için mevcut ilk 64-bit sürümü.
7.2 R2006a 15 1.5.0 2006 1 Mart 2006
7.3 R2006b 16 1.5.0 1 Eylül 2006 HDF5 tabanlı MAT dosyası desteği eklendi.
7.4 R2007a 17 1.5.0_07 2007 1 Mart 2007 Tekli genişletme etkinken öğe öğe ikili işlem uygulamak için yeni bsxfun işlevi eklendi.
7.5 R2007b 18 1.6.0 1 Eylül 2007 Windows 2000 ve PowerPC Mac için son sürüm; Windows Vista için Lisans Sunucusu desteği; P kodu için yeni dahili format.
7.6 R2008a 19 1.6.0 2008 1 Mart 2008 Yeni bir sınıf tanımı sözdizimi ile nesne yönelimli programlama yeteneklerinde önemli geliştirmeler; paketlerle ad alanlarını yönetme yeteneği.
7.7 R2008b 20 1.6.0_04 9 Ekim 2008 SSE2 içermeyen işlemciler için son sürüm; Yeni Map veri yapısı; rastgele sayı üreteçlerinde yükseltmeler.
7.8 R2009a 21 1.6.0_04 2009 6 Mart 2009 Microsoft 32-bit ve 64-bit Windows 7 için ilk sürüm; .NET Framework'e yeni harici arayüz.
7.9 R2009b 22 1.6.0_12 4 Eylül 2009 Intel 64-bit Mac için ilk ve Solaris SPARC için son sürüm; fonksiyon çağrılarında argümanları yok saymak için tilde operatörü (~) için yeni kullanım.
7.9.1 R2009bSP1 1.6.0_12 2010 1 Nisan 2010 Hata düzeltmeleri.
7.10 R2010a 23 1.6.0_12 5 Mart 2010 Intel 32 bit Mac için son sürüm.
7.11 R2010b 24 1.6.0_17 3 Eylül 2010 Numaralandırmalar için destek eklendi; MATLAB kodunu NVIDIA CUDA tabanlı GPU'larda çalıştırmak için özellikler eklendi.
7.11.1 R2010bSP1 1.6.0_17 2011 17 Mart 2011 Hata düzeltmeleri ve güncellemeler.
7.11.2 R2010bSP2 1.6.0_17 5 Nisan 2012 Hata düzeltmeleri.
7.12 R2011a 25 1.6.0_17 8 Nisan 2011 Rastgele sayı üretimini kontrol etmek için yeni rng fonksiyonu.
7.13 R2011b 26 1.6.0_17 1 Eylül 2011 Belleğe yüklemeden değişkenlerin parçalarına doğrudan MAT dosyalarından erişme/değiştirme yeteneği eklendi; Paralel Hesaplama Araç Kutusu ile maksimum yerel işçi sayısı 8'den 12'ye çıkarıldı.
7.14 R2012a 27 1.6.0_17 2012 1 Mart 2012 32-bit Linux destekli son sürüm.
8 R2012b 28 1.6.0_17 11 Eylül 2012 Toolstrip arayüzü ile ilk sürüm; MATLAB Uygulamaları tanıtıldı; yeniden tasarlanmış dokümantasyon sistemi.
8.1 R2013a 29 1.6.0_17 2013 7 Mart 2013 Yeni birim test çerçevesi.
8.2 R2013b 30 1.7.0_11 6 Eylül 2013 Yerleşik Java Çalışma Zamanı Ortamı (JRE) sürüm 7'ye güncellendi; Yeni tablo veri türü.
8.3 R2014a 31 1.7.0_11 2014 7 Mart 2014 MEX dosyaları oluşturmak için basitleştirilmiş derleyici kurulumu; çekirdek MATLAB'de USB Web kamerası desteği; Paralel Hesaplama Araç Kutusu ile yerel çalışan sayısı artık 12 ile sınırlı değil.
8.4 R2014b 32 1.7.0_11 3 Ekim 2014 Yeni sınıf tabanlı grafik motoru (a.k.a. HG2); GUI'de sekme işlevi; geliştirilmiş kullanıcı araç kutusu ambalajı ve yardım dosyaları; zaman-tarih manipülasyonları için yeni nesneler; IDE'de Git-Subversion entegrasyonu; MapReduce ile büyük veri yetenekleri (Hadoop'a ölçeklenebilir); MATLAB içinden Python kullanmak için yeni py paketi; Python'dan MATLAB'ı çağırmak için yeni motor arayüzü; birkaç yeni ve geliştirilmiş işlev: webread (JSON/XML destekli RESTful web hizmetleri), tcpclient (soket tabanlı bağlantılar), histcounts, histogram, animatedline ve diğerleri.
8.5 R2015a 33 1.7.0_60 2015 5 Mart 2015
8.5 R2015aSP1 1.7.0_60 14 Ekim 2015 Windows XP ve Windows Vista'yı destekleyen son sürüm.
8.6 R2015b 34 1.7.0_60 3 Eylül 2015 Yeni MATLAB yürütme motoru (diğer adıyla LXE); grafikler ve ağlarla çalışmak için grafik ve digraf sınıfları; Windows'ta desteklenen derleyici olarak MinGW-w64; 32 bit destekli son sürüm.
9.0 R2016a 35 1.7.0_60 2016 3 Mart 2016 Canlı Komut Dosyaları yayınlandı: metin, kod ve çıktıyı birleştiren etkileşimli belgeler (Literate programlama tarzında); Uygulama Tasarımcısı tanıtıldı: uygulamalar oluşturmak için yeni bir geliştirme ortamı (yeni tür UI figürleri, eksenler ve bileşenlerle); Duraklatma Düğmesi kullanarak çalışan programların yürütülmesini duraklatın.
9.1 R2016b 36 1.7.0_60 15 Eylül 2016 Komut dosyalarında yerel işlevler tanımlama yeteneği eklendi; boyutların otomatik genişletilmesi (daha önce bsxfun'a açık çağrı yoluyla sağlanıyordu); Büyük veriler için uzun diziler; yeni dize türü; JSON'u kodlamak / kodunu çözmek için yeni işlevler; Java için resmi MATLAB Engine API.
9.2 R2017a 37 1.7.0_60 2017 9 Mart 2017 MATLAB Online yayınlandı: bir web tarayıcısından erişilen bulut tabanlı MATLAB masaüstü; çift tırnaklı dizeler; Memoization için yeni memoize işlevi; genişletilmiş nesne özellikleri doğrulaması; birim testi için mocking çerçevesi; MEX varsayılan olarak 64 bit'i hedefler; ısı haritası grafikleri oluşturmak için yeni ısı haritası işlevi.
9.3 R2017b 38 1.8.0_121 21 Eylül 2017 MATLAB kodunu Nvidia için CUDA koduna dönüştüren bir GPU Coder tanıtıldı.
9.4 R2018a 39 1.8.0_144 2018 15 Mart 2018 Canlı düzenleyicide iyileştirmeler; C++ MEX arayüzünün tanıtımı; sekme tamamlamayı özelleştirme yeteneği; web uygulamaları.
9.5 R2018b 40 1.8.0_152 12 Eylül 2018 Amazon Web Services gibi bulut sağlayıcıları için destek eklendi; Neural Network Toolbox, Deep Learning Toolbox ile değiştirildi.
9.6 R2019a 41 1.8.0_181 2019 20 Mart 2019 MATLAB Projeleri yayınlandı; Stateflow ile durum makinesi programlama eklendi.
9.7 R2019b 42 1.8.0_202 11 Eylül 2019 Girdi doğrulaması için 'arguments' bloğunun tanıtılması; fonksiyon çıktılarına nokta indekslemenin etkinleştirilmesi; Canlı Editör Görevlerinin tanıtılması.
9.8 R2020a 43 2020 19 Mart 2020 Mupad not defterinin kaldırılması; AMD CPU'lar için geliştirilmiş destek (AVX2); MATLAB kod dosyaları için varsayılan UTF-8 kodlaması; Simulink ile bağımsız uygulamalar oluşturma yeteneği.
9.9 R2020b 44 17 Eylül 2020 AMD CPU'lar (AVX2) için geliştirilmiş destek; Simulink'in çevrimiçi sürümü.
9.10 R2021a 45 2021 11 Mart 2021
9.11 R2021b 46 22 Eylül 2021
9.12.0 R2022a 47 2022 9 Mart 2022

Numara (veya sürüm numarası), Eşzamanlı Lisans Yöneticisi programı FLEXlm tarafından bildirilen sürümdür. Hem MATLAB hem de resmi araç kutularındaki değişikliklerin tam listesi için MATLAB sürüm notlarına bakın.

Lisans

MATLAB, MathWorks şirketinin tescilli bir üründür, bu yüzden kullanıcılar satıcıya bağlıdır. MATLAB Builder kütüphane dosyalarıyla MATLAB fonksiyonları dağıtılıp, .NET veya Java uygulaması oluşturulabiliyor olmasına rağmen, ileriki gelişimi MATLAB diline bağlı olacaktır.

Her araç kutusu ayrı olarak satın alınmaktadır. Eğer değerlendirme lisansı talep edilirse, MATLAB değerlendirmesi için MathWorks satış departmanı proje hakkında detaylı bilgi talep eder. Bir lisans edinmenin tüm süreçleri, para ve zaman şartlarından dolayı çok pahalıdır. Değerlendirme lisansı 2 veya 4 hafta içinde değerlendirilip verilir. MATLAB'ın öğrenci versiyonu da mevcuttur.

Şikayet eden AB antitröst düzenleyicileri Mathworks'ün rakip lisansları satmayı reddedip reddetmediğini araştırıyor.

Dosya uzantıları

Yerel

.fig
MATLAB figürü
.m
MATLAB fonksiyonu, scripti, ya da sınıfı
.mat
MATLAB depolama değişkenleri için binary dosyası
.mex...
MATLAB executable (belirli platform, ör. Mac için ".mexmac", Linux için ".mexglx" vb.)
.p
MATLAB content-obscured .m dosyası (result e())

Üçüncü parti

.jkt
MATLAB için Jacket tarafından oluşturulan GPU önbellek dosyası (AccelerEyes)
.mum
MATLAB CAPE-OPEN Unit Operation Model File (AmsterCHEM)