C#’da MATLAB komutlarını kullanma
MATLAB, mühendislik, matematik ve finans gibi alanlarda kullanılan gelişmiş bir yazılım. Bu programı daha önce kullanmışsanız yetenekleri hakkında bir fikir sahibisinizdir. Web sitesi www.mathworks.com ‘dur. Bu konuda 3 tane adım adım halinde anlatan yazı yazdım. İlk yazı, bir matlab m fonksiyonunu kullanarak c# içinden çağırarak kullanmak. İkincisi değer döndüren bir matlab fonksiyonunu kullanarak c# içine bu değerleri almak daha sonra yeniden başka bir m fonksiyonuna göndermek. (Bu konu mwarray sınıfı üzerine yoğunlaşarak anlatmaktadır). Son konu ise oluşturduğunuz c# programlarını başka bilgisayarlarda kullanabilmeniz için gereken package işlemlerini anlatmakta. Zira c# içinde kullandığınız matlab komutları sadece geliştirme yaptığınız bilgisayarda çalışabilmekte. Diğer bilgisayarlarda kullanbilmek için matlab fonksiyonlarını package dosyası haline getirip c# projeniz ile birlikte dağıtmanız gerekir.
Adım adım matlab komutlarını c# da kullanma(c# matlab entegrasyon u)
Matlab’ın fonksiyonlarını matlab dışında da kullanmak matlab builder ile mümkün. Matlab builder , matlab ile birlikte gelen bir araç. Matlab’ın m fonksiyonlarını diğer programlama dillerinde kullanabilmenizi sağlıyor. Hatta bu programı kullanarak exc ell add-inn’leri hazırlayarak matlab fonksiyonlarını Excel içinden dahi kullanabilirsiniz. Builder’ın bir başka özelliği ise oluşturduğunuz programları package’layarak başka bilgisayarlarda telif sorunu olmadan kullanabilmeniz. Düşünsenize MAtlab dahi yüklü olmayan bir bilgisyarda bütün matlab fonksiyonlarını kullanabilirsiniz.
İşte şimdi adım adım bir örnek yapalım hem de grafik çizdiren bir örnek.
1. C:\ dizini içine matlabc isimli bir klasör açın.
2. Şimdi Matlab programını açın. Matlab’ı c:\matlabc klasörünü gösterecek şekilde ayarlayın.

3. Yeni bir m file dosyası açın. İçine
function ciz()
x = -pi:.1:pi;
y = sin(x);
plot(x,y)
yazın ve ciz.m ismiyle kaydedin. Fonksiyonu matlab ekranında deneyebilirsiniz komut satırına ciz yazın. Bir sinüs grafiğinin çizildiğini göreceksiniz.
4. Bu ciz.m dosyasını şimdi bir .net class’ına çeviriceğiz. Bunun için matlab da deploytool yazın. Eğer matlab’ın 6.5 gibi eski bir sürümünü kullanıyorsanız burada comtool yazmanız gerekir. Deploytool aracının görüntüsü şu şekildedir.

5. Eğer daha önce deploytool komutunu kullanmadıysanız, Matlab derleme için kullanacağı derleyiciyi belirlemenizi ister. Bunun için komut satırına mbuild -setup yazmanız gerekir. Matlab bir compiler seçmenizi ister. 1 numaralı lcc derleyicisini seçin ve onaylayarak gidin. Matlab Hata verebilir, endişelenmeyin. Benzer bir hatayla karşılaşmıştım. Bu hatayı dert etmeyin derleme işlemi sırasında prf isimli bir matlab seçenekler dosyasını kullanarak bu sorun giderilecektir. Adımları takip etmeye devam edin.
6. Deployment tool üzerindeki New deployment Project düğmesine tıklayarak aşağıdaki pencereyi görüntüleyin.

7. Pencere bu şekilde olacak şekilde ayarlamaları yapın ve OK düğmesine tıklayın. Böylece deployment projesi oluşturmuş oluyorsunuz. Sıradaki aşama kullanmak istediğiniz .m file’ları proje içine dahil etmek
8. Add File düğmesine tıklayarak ciz.m dosyasını alın. Matlabclass klasörü altına alındığını göreceksiniz. İsterseniz burada 1’den fazla .m dosyasını da projenize alabilirsiniz.
9. Open Project Settings düğmesine tıklayın. Seçenekler penceresi açılacaktır.
10. Açılan pencerede Compiler Options File alanına Browse diyerek matlab.prf dosyasını gösterin. Bu işlemi bir defa yapmanız yeterlidir. Derleme zamanındaki hatanın giderilmesi için kullanılır.

11. OK düğmesine tıklayarak pencereyi kapatın. Build the Project düğmesine tıklayarak projeyi compile edin. (Not: birkaç dakika sürebilir.)
12. Derleme işlemi hatasız biterse C:\matlabc\matlabc\distrib konumuna 2 tane dosya gelecektir. Bunlardan dll dosyası c# projesinde kullanacağınız class dosyası.

13. Visual studio programını açın. Ve bir c# uygulaması oluşturun.(oluşturduğunuz class’ı asp.net sayfalarında da kullanabilirsiniz.)
14. Projenize add referrence diyerek oluşturduğunuz bu dll dosyasını gösterin.


15. Projeye bir düğme ekleyin şu kodu oluşturun.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using matlabc; // ekleyin
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// classımızın matcl isimli olarak türetin.
matlabcclass matcl = new matlabcclass();
// ve tabiki m dosyası içindeki ciz fonksiyonunu taşıyın.
matcl.ciz();
}
}
}
16. Projenizi çalıştırın ve düğmeyi tıklayın. Matlab grafiğinin geldiğini göreceksiniz. Etkileyici değil mi?
MATLAB, mühendislik, matematik ve finans gibi alanlarda kullanılan gelişmiş bir yazılım. Bu programı daha önce kullanmışsanız yetenekleri hakkında bir fikir sahibisinizdir. Web sitesi www.mathworks.com ‘dur. Bu konuda 3 tane adım adım halinde anlatan yazı yazdım. İlk yazı, bir matlab m fonksiyonunu kullanarak c# içinden çağırarak kullanmak. İkincisi değer döndüren bir matlab fonksiyonunu kullanarak c# içine bu değerleri almak daha sonra yeniden başka bir m fonksiyonuna göndermek. (Bu konu mwarray sınıfı üzerine yoğunlaşarak anlatmaktadır). Son konu ise oluşturduğunuz c# programlarını başka bilgisayarlarda kullanabilmeniz için gereken package işlemlerini anlatmakta. Zira c# içinde kullandığınız matlab komutları sadece geliştirme yaptığınız bilgisayarda çalışabilmekte. Diğer bilgisayarlarda kullanbilmek için matlab fonksiyonlarını package dosyası haline getirip c# projeniz ile birlikte dağıtmanız gerekir.
Adım adım matlab komutlarını c# da kullanma(c# matlab entegrasyon u)
Matlab’ın fonksiyonlarını matlab dışında da kullanmak matlab builder ile mümkün. Matlab builder , matlab ile birlikte gelen bir araç. Matlab’ın m fonksiyonlarını diğer programlama dillerinde kullanabilmenizi sağlıyor. Hatta bu programı kullanarak exc ell add-inn’leri hazırlayarak matlab fonksiyonlarını Excel içinden dahi kullanabilirsiniz. Builder’ın bir başka özelliği ise oluşturduğunuz programları package’layarak başka bilgisayarlarda telif sorunu olmadan kullanabilmeniz. Düşünsenize MAtlab dahi yüklü olmayan bir bilgisyarda bütün matlab fonksiyonlarını kullanabilirsiniz.
İşte şimdi adım adım bir örnek yapalım hem de grafik çizdiren bir örnek.
1. C:\ dizini içine matlabc isimli bir klasör açın.
2. Şimdi Matlab programını açın. Matlab’ı c:\matlabc klasörünü gösterecek şekilde ayarlayın.

3. Yeni bir m file dosyası açın. İçine
function ciz()
x = -pi:.1:pi;
y = sin(x);
plot(x,y)
yazın ve ciz.m ismiyle kaydedin. Fonksiyonu matlab ekranında deneyebilirsiniz komut satırına ciz yazın. Bir sinüs grafiğinin çizildiğini göreceksiniz.
4. Bu ciz.m dosyasını şimdi bir .net class’ına çeviriceğiz. Bunun için matlab da deploytool yazın. Eğer matlab’ın 6.5 gibi eski bir sürümünü kullanıyorsanız burada comtool yazmanız gerekir. Deploytool aracının görüntüsü şu şekildedir.

5. Eğer daha önce deploytool komutunu kullanmadıysanız, Matlab derleme için kullanacağı derleyiciyi belirlemenizi ister. Bunun için komut satırına mbuild -setup yazmanız gerekir. Matlab bir compiler seçmenizi ister. 1 numaralı lcc derleyicisini seçin ve onaylayarak gidin. Matlab Hata verebilir, endişelenmeyin. Benzer bir hatayla karşılaşmıştım. Bu hatayı dert etmeyin derleme işlemi sırasında prf isimli bir matlab seçenekler dosyasını kullanarak bu sorun giderilecektir. Adımları takip etmeye devam edin.
6. Deployment tool üzerindeki New deployment Project düğmesine tıklayarak aşağıdaki pencereyi görüntüleyin.

7. Pencere bu şekilde olacak şekilde ayarlamaları yapın ve OK düğmesine tıklayın. Böylece deployment projesi oluşturmuş oluyorsunuz. Sıradaki aşama kullanmak istediğiniz .m file’ları proje içine dahil etmek
8. Add File düğmesine tıklayarak ciz.m dosyasını alın. Matlabclass klasörü altına alındığını göreceksiniz. İsterseniz burada 1’den fazla .m dosyasını da projenize alabilirsiniz.
9. Open Project Settings düğmesine tıklayın. Seçenekler penceresi açılacaktır.
10. Açılan pencerede Compiler Options File alanına Browse diyerek matlab.prf dosyasını gösterin. Bu işlemi bir defa yapmanız yeterlidir. Derleme zamanındaki hatanın giderilmesi için kullanılır.

11. OK düğmesine tıklayarak pencereyi kapatın. Build the Project düğmesine tıklayarak projeyi compile edin. (Not: birkaç dakika sürebilir.)
12. Derleme işlemi hatasız biterse C:\matlabc\matlabc\distrib konumuna 2 tane dosya gelecektir. Bunlardan dll dosyası c# projesinde kullanacağınız class dosyası.

13. Visual studio programını açın. Ve bir c# uygulaması oluşturun.(oluşturduğunuz class’ı asp.net sayfalarında da kullanabilirsiniz.)
14. Projenize add referrence diyerek oluşturduğunuz bu dll dosyasını gösterin.


15. Projeye bir düğme ekleyin şu kodu oluşturun.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using matlabc; // ekleyin
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// classımızın matcl isimli olarak türetin.
matlabcclass matcl = new matlabcclass();
// ve tabiki m dosyası içindeki ciz fonksiyonunu taşıyın.
matcl.ciz();
}
}
}
16. Projenizi çalıştırın ve düğmeyi tıklayın. Matlab grafiğinin geldiğini göreceksiniz. Etkileyici değil mi?
23 yorum:
Teşekkürler güzel ve aydınlatıcı bir örnek olmus emeğinize sağlık.
Benim bu konuda bir sorum olacak.
Burada x=-pi:.1:pi aralığını c# formu üzerinde textBox yardımıyla istediğimiz bir aralık yapabilme imkanımız var mı acaba?
bu konuda bilginiz var mı?
şimdiden teşekkürler...
Merhaba, güzel bir yazıydı öncelikle. Teşekkür ederim. Fakat ben matlab kurulu olmayan bir makinada hazırlamış olduğum dll'deki fonksiyonu çalıştıramadım. Yoksa bu mümkün değil midir?
Sayın Şahin,
istediğiniz son derece mümkün ama eksik, Matlab deployment tool ile oluşturulmuş bir dll dosyasının matlab yüklü olmayan bir makinada çalışması için compatible bir Matlab Frameworkün yüklenmesi gerekiyor. Bu frameworkü matlab yükleme dizininde bulabilirsiniz. Bu aynı .net framework yüklü olmayan bir makinada c# uygulaması çalıştırmaya benziyor takdir edersiniz ki c# da frameworkü olmadan çalışmayacaktır.
iyi çalışmalar
Çok teşekkürler, ellerinize sağlık. O kadar içinden çıkılmaz gibi gelen bir konuyu adım adım açıklamışsınız, Allah razı olsun :D
İşinize yaramanıza sevindim. Hayırlı günler dilerim..
Teşekkürler çok açıklayıcı bir örnek olmuş emeğinize sağlık.
Merhaba;
çok güzel anlatmışsınız. Teşekkürler; fakat diğer 2 yazınızı bulamadım. Link vermeniz mümkün müdür?
Merhaba;
çok güzel anlatmışsınız. Teşekkürler; fakat diğer 2 yazınızı bulamadım. Link vermeniz mümkün müdür?
Selamlar,
malesef diğer iki yazıyı yazmak hiç nasip olmadı..
Merhabalar,
Çok güzel bir yazı,Burak Şahin Bey'in sorusu da güzel bir soru, çok güzel ve işe yarayan bilgiler vermişsiniz, bu yazılarınızın 2011'de devam etmesi dileğiyle...
Bilgi paylaştıkça çoğalır...
Selamlar ben geliştirmiş olduğum projede MATLAB de yazmış olduğum bir m file ı C# üzerinden çalıştırmak istiyorum bu bir fonksiyon değil sadece c# üzerinden tetiklemek istiyorum çalışması için. Yazmış olduğunuz yazıyı okudum fakat ne denediysem olmuyor. MATLAB R2010A kullanıyorum onun deployment tool penceresi biraz daha farklı .NET Component şeklinde değilde deployment project .NET assembly ismiyle çıkıyor .m file ı ekleyip derledikten sonra disturb klasörünün içinde ABC.dll ve ABCnative.dll adında 2 dll oluşturmuş oluyor ve ben bunları ayrı ayrı projeme referans ettim ve obje yaratmayı denedim. Obje yaratma işlemi sonunda hata aldım.
Hata: 'ABC' is a 'namespace' but is used like a 'type'
obje olarak kullandırtmıyor. Sizce ne yapabilirim bir fikriniz varmı.
Merhaba;
bu matlab grafiğini windows form içerisinde açmam mümkün müdür?
Merhbalar, ben de makalenizi okudum ve yapmaya çalışıyorum matlab de derleme kısmını hallettim fakat visula studio 2008 de çalıştırmaya çalışıyorum, "'matlabc.matlabcclass' tür başlatıcısı özel durum döndürdü" hata alıyroum. Yardımcı olursanız sevinirim, iyi çalışmalar. Teşekkürler
Merhbalar, ben de makalenizi okudum ve yapmaya çalışıyorum matlab de derleme kısmını hallettim fakat visula studio 2008 de çalıştırmaya çalışıyorum, "'matlabc.matlabcclass' tür başlatıcısı özel durum döndürdü" hata alıyroum. Yardımcı olursanız sevinirim, iyi çalışmalar. Teşekkürler
merhaba benim bi sorum va bu deploytool matlab da yazınca çıkmıyor bende plugin_error_plugins.txt adlı bi dosya oluşuyor kaç yere baktım bununla ilgili hiç bişey yok nerdeyse matlab R2009b kullanıyorum acaba sürümdemi sorun var ????
Merhaba Değerli bİlgileriniz için çok teşekkür ederim, bende matlab de yaptığım yazılımları c# ile bağlantılı kullanmak için çok dolaylı y6ollar düşünmüştüm sanırım yazılarınız bana yardımçı olacak. non-recursive 3d floodfill algoritması yazmıştım görüntü işleme ve hesap mdullerı ıle ticari veya en azından ucretsız ama lisanslı bır hale getırmek ıstıyorum ılerde mumkun olursa sıze danısacağım ınsallah kolay gelsın..
Tam aradığım şeydi gerçekten çok teşekkürler
Merhaba hocam, yazınzı okudum. benim araştırma konularımdan biri de " c# veya c++ dosyalarını matlab ta nasıl derlerim" bu konuda yardımcı olursanız çok sevinirim. Cevabınız beklyorum, saygılar...
Selamlar Malesef makale eskiden yazıldı ve daha sonradan üzerine araştırma imkanım olmadı. Bu sebepten sorunuza cevap veremeyeceğim malesef
merhaba,
Size bir sorum olacak. Biz tüm işlemleri yaptık ancak ne zaman ki C# da matlabcclass matcl=new matlabcclass; işlemini yapmaya çalıştık , şöyle bir hata ile karşılaştık "Error1 The type or namespace name 'matlabcclass' could not be found (are you missing a using directive or an assembly reference?) " acaba herhangi bir kütüphanemizmi eksik? Acilen yardımcı olursanız çok sevinirim.
"tür başlatıcısı özel durum döndürdü" Hatasının çözümü.
Bu sorun bilgisayarda kullanılan işlemci mimarisi ile ilgili bir sorundur. Bu sorunu düzeltmek için, menü çubuğundan Build>>Configuration Manager'e tıklayın. Burada platformu x64 veya x86 olarak ayarlayın. Bu ayar, oluşturduğunuz .m dosyalarının hangi işletim sistemine göre tasarlandığıyla ilgilidir.
İyi çalışmalar dilerim.
İyi günler ben de "tür başlatıcısı özel durum döndürdü" hatasını almaktayım.
Ancak VS da Configuration Manager platformunda x64 veya x86 bulunmamakta.
"Yeni" den manual giriş mi gerekiyor?
teşekkürler
Yorum Gönder