Birden fazla karakter dizgesini birarada göstermek için dizgeleri, vektörler gibi bir arada kullanılabiliriz.
» k = strcat('Programa hosgeldiniz' ,'program kodu: ' , '120885')
k =
Programa hosgeldiniz program kodu: 120885
» k=strvcat('Programa hosgeldiniz' ,'program kodu: ' , '120885')
k =
Programa hosgeldiniz
program kodu:
120885
Sayı-Dizge Dönüşümü
num2str komutu, kayan nokta sayısını dizgeye dönüştürür; int2str komutu ise sadece bir tamsayıyı, dizgeye dönüştürür.
Örnek olarak
» x = 236
x =
236
ifadesi bir tamsayı tanımlar. Oysa
» xs=int2str(x)
xs =
236
komutu, 236 tamsayısını 236 dizgesine dönüştürür.
Dizge-Sayı Dönüşümleri
Matlab’de dizgeleri sayıya dönüştürmek için iki temel komut vardır. str2num fonksiyonu, normalde ASCII karakterdeki dizgeyi sayıya dönüştürür; eval fonksiyonu ise nümerik formdan sayı içeren dizgeye dönüştürür. Her iki fonksiyon da temelde aynı işlevi görür.
» c=str2num('236')
c =
236
komutuyla 236 dizgesi 236 sayısına dönüşmüştür.
PROGRAM ÇIKIŞI ve SONUÇ GÖSTERME İŞLEMLERİ
Bir programın sonucunu yani çıkış verileri yazdırmak veya ekranda belirli bir formatta görüntülemek için üç temel komutumuz vardır: format, disp ve fprintf komutları.
disp KOMUTU
Genel yazım formatı:
disp(x)
şeklindedir. disp komutu bir dizi veya metni görüntüler. Dizi görüntülemede dizinin adı yazılmaz ve boş bir dizi görüntülenmez. x bir karakter dizgesi ise metin olarak görüntülenir. Örnek olarak bir a dizisi alaalım.
» a=[1 2 3 4 5]
a =
1 2 3 4 5
» disp(a)
1 2 3 4 5
disp(' ') komutu kendisinden önce ve sonra gelecek satır arasında bir satır boşluk sağlar. ' ' tırnakları arasındaki boşluk sayısının önemi yoktur. Ancak aynı komutu bir kere daha alt alta kulanır
sprintf KOMUTU
sprintf komutu, formatlı veriyi bir dizgeye yazmak için kulanılır. Genel yazım formatı
[s,errmsg] = sprintf(format,A,...)
şeklindedir. Belirlenmiş format dizgesinin kontrolu altında onu s dizge değişkenine döndürür. errmsg isteğe bağlı bir çıkış argümanıdır ve bir hata oluştuğunda veya boş bir matris girildiğinde bir hata mesajına döndürür. sprintf , çıkışı bir dosyaya yazma işlevi dışındaki fprintf komutunun kullanımı ile aynıdır. fprintf ya bir dosyaya ya da ekrana çıkış verir oysa sprintf, veriyi ve sonucu bir dizge değişkenine döndürür. format dizgesinin kullanımı fprintf komutunda anlatıldığı gibidir. Aşağıda bir kaç örnek verilmiştir.
Komut
|
Sonuç
|
sprintf('%0.5g', (1+sqrt(5))/2)
|
1.618
|
sprintf('%d', round(pi))
|
3
|
sprintf('%s', 'merhaba')
|
merhaba
|
fprintf KOMUTU
fprintf komutu, formatlı program çıkışı ekranda göstermek veya elde etmek ve bunu bir dosyaya yazdırmak için kulanılır. Genel yazım formatı
fprintf('format' ,A, ...)
şeklindedir. 'format' stringinde belirtilen formatta A dizisi veya ek dizi argümanlarının elemanlarını gösterir. Daha basit bir gösterim ile fprintf('format' ,liste, ...) burada liste virgülle ayrılan değişken adlarını listeler. Komuttaki format stringinin genel formatı:
%[-/+/0][sayı1.sayı2] Kod
şeklindedir. Burada % işareti sabittir ve mutlaka bulunmalıdır. Köşeli parantez içindeki kısımlar isteğe bağlıdır. Bayrak (flag) olarak adlandırılan [-/+/0] gösteriminde - çıkışın sola hizalı olacağını, + önünde sürekli + işaretinin olacağını ve 0 da sayı alanının boşluktan ziyade 0’la doldurulacağını gösterir. Sayı alanı ve kesinliği yani ondalığı olarak adlandırılan ikinci kısımdaki sayı2, ondalık göstergesi olan noktanın sağındaki rakam sayısını, sayı1 yazdırılacak rakamların minimum alan genişliğini gösterir. Kod, kontrol ve biçim kodlarını daha doğrusu dönüşüm karakterlerini içerir. %işaretinden sonra yazılacak ifadelerin arasında boşluk bırakılmamalıdır.
Kaçış (Kontrol) Kodları
|
Dönüşüm (Biçim) Kodları
|
Karakter
|
Tanımı
|
Belirteç
|
Tanımı
|
\n
|
Yeni bir satıra başlar (return or Enter)
|
%e
|
Küçük harfle bilimsel notasyon
|
\r
|
Yeni satırın başı (linefeed) Carriage return
|
%E
|
Büyük harfle bilimsel notasyon
|
\b
|
Geriboşluk karakteri (backspace)
|
%f
|
Sabit nokta (ondalık) notasyon
|
\t
|
Yatay sekme karakteri (Tab)
|
%g
|
En kısa olmasına göre %e veya %f
|
\f
|
Formfeed karakteri
|
%G
|
%g ile aynı ancak E kullanır
|
''
|
Apostrof karakteri (iki tek tırnak)
|
%s
|
karakter dizgesi tanımlar
|
\\
|
Ters bölü karakteri (backslash)
|
%c
|
Tekil karakter
|
%%
|
Yüzde işareti karakteri
|
%d
|
İşaretli ondalık notasyon
|
» fprintf('Islem sonucu %6.2f bulunmustur. \n', 813);
Islem sonucu 813 bulunmustur.
» fprintf('Islem sonucu %6.4f bulunmustur. \n', 813);
Islem sonucu 0813 bulunmustur.
Ör: 1’den 5’e kadar sayıların karesini sayılar sol tarafta kareleri sağ tarafta olacak şekilde gösteriniz. m-dosya adı kareselgos.m olsun
disp(' ')
disp('sayi karesi ')
disp('==== ======== ')
for i = 1:5
karesi = i^2;
sayi=i;
fprintf('%2.0f \t %2.0f\n',sayi,karesi)
end
» kareselgos
sayi karesi
==== ========
1 1
2 4
3 9
4 16
5 25
Ör: Bir küpün bir kenarını girerek alanını ve hacmini veren kup.m adlı bir program yazınız. Rastgele değerlerle test ediniz.
disp('KUP Bilgileri')
a = input('Kupun bir kenarini giriniz: ');
b=6*a^2;
c=a^3;
disp(['Alani: ' num2str(b) 'm^2' ])
disp(['Hacmi: ' num2str(c) 'm^3' ])
» kup
KUP Bilgileri
Kupun bir kenarini giriniz: 4
Alani: 96m^2
Hacmi: 64m^3
tic, toc fonksiyonu
Bu fonksiyon bir işlemin ne kadar süre zaman aldığını ölçmek için kronometre gibi çalışır işlemin başında sanki kronometreye basılır
ve işlem basında tekrar basılır ve aradaki zaman ölçülür. Genel yazım formatı
tic
çeşitli ifadeler
toc
şeklindedir. tic kronometreyi başlatır. toc ise tic in kullanıldığı andan itibaren geçen süreyi yazdırır. sure adlı değişken ise geçen süreyi saniye olarak toc’a döndürür.
tic;
x=0:0.001:10;
y=(sin(x).*cos(x))./(sin(x)-cos(x));
toc;
kodunu bir sureolc.m dosyasına yazalım ve çalıştıralım.
elapsed_time =
0.0500
Görüleceği gibi işlem toplam olarak 0.05 saniye sürdü. elapsed_time =geçen süre
PROGRAMI .EXE HALİNE GETIRMEK
Örnek olarak ikinci dereceden denklemin kokleirni bulan bir programı .exe yapalım. En önemli nokta program kodunun fonksiyon m-dosyası şeklinde olması ve Turkce karaketer kullanılmamasıdır.
f unction [x1,x2]=iddkokleri
disp('ax^2+bx+c=0 seklindeki 2. dereceden denklem cozumu')
disp(' ')
%Katsayilari girme
a=input ('a katsayisini giriniz: ');
b=input ('b katsayisini giriniz: ');
c=input ('c katsayisini giriniz: ');
disp(' ')
if a==0
disp('Denklem 2. dereceden degildir sifirdan farkli bir a katsayisi giriniz')
end
clc
Katsayilar=[a b c]
% Dikstriminant bulma
D=b^2-4*a*c;
% Kokleri bulma
x1=( -b + sqrt(D) )/(2*a);
x2=( -b - sqrt(D) )/(2*a);
% Kokleri sinama
if D < 0
disp('Denklemin iki kompleks koku vardir.')
x1
x2
else if D == 0
disp('Denklemin iki esit koku vardir.')
x1,x2
else
disp('Denklemin iki reel ayrik koku vardir.')
x1
x2
end
end
Programı yazıp fonksiyon adıyla aynı adlı olarak kaydettikten sonra komut satırından
>> mcc -m iddkokleri
yazılır ve Lcc compiler seçeneği secilerek m dosyanız iddkokleri.exe haline getirilir.
|