<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ismailari.com</title>
	<atom:link href="http://ismailari.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ismailari.com</link>
	<description>İsmail Arı&#039;nın anasayfası</description>
	<lastBuildDate>Tue, 17 Dec 2013 15:14:32 +0000</lastBuildDate>
	<language>tr-TR</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.8.36</generator>
	<item>
		<title>MATLAB&#8217;de fonksiyon girdilerinde varsayılan değerler kullanabilir miyiz?</title>
		<link>http://ismailari.com/blog/matlabde-fonksiyon-girdilerinde-varsayilan-degerler-kullanabilir-miyiz/</link>
		<comments>http://ismailari.com/blog/matlabde-fonksiyon-girdilerinde-varsayilan-degerler-kullanabilir-miyiz/#comments</comments>
		<pubDate>Fri, 29 Nov 2013 19:20:51 +0000</pubDate>
		<dc:creator><![CDATA[İsmail Arı]]></dc:creator>
				<category><![CDATA[Programlama]]></category>
		<category><![CDATA[matlab]]></category>

		<guid isPermaLink="false">http://ismailari.com/?p=4923</guid>
		<description><![CDATA[MATLAB&#8217;de bir fonksiyonu farklı sayıdaki parametreler ile çağırabiliriz. Bu durumda fonksiyon bazı parametreler için varsayılan değer kullanacak şekilde yazılmalıdır. Örneğin üçüncü parametresi opsiyonel olan bir fonksiyon yazalım: function f(g1,g2,g3) if nargin < 3 g3 = 'varsayilan deger'; end end nargin komutu "number of arguments in"i, yani girdi sayısını veriyor. Fonksiyon iki girdi ile çağırılırsa g3'ü [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>MATLAB&#8217;de bir fonksiyonu farklı sayıdaki parametreler ile çağırabiliriz. Bu durumda fonksiyon bazı parametreler için varsayılan değer kullanacak şekilde yazılmalıdır. Örneğin üçüncü parametresi opsiyonel olan bir fonksiyon yazalım:</p>
<pre class="prettyprint lang-matlab">
function f(g1,g2,g3)
    if nargin < 3
        g3 = 'varsayilan deger';
    end
end</pre>
<p><code>nargin</code> komutu "<em>number of arguments in</em>"i, yani girdi sayısını veriyor. Fonksiyon iki girdi ile çağırılırsa <code>g3</code>'ü varsayılan değere atıyor.</p>
<p>Yeri gelmişken çıktı sayısını da <code>nargout</code> ile öğrenebildiğimizi söyleyelim. Bazı durumlarda fonksiyonu az sayıdaki değişkene atamak isteriz. Örneğin sadece özdeğerleri istiyorsak, özvektörleri ayrıca hesaplamanın masrafından <a href="http://www.mathworks.com/help/matlab/ref/eigs.html"><code>eigs</code></a>'ı tek çıktıya eşitleyerek yırtabiliriz.</p>
]]></content:encoded>
			<wfw:commentRss>http://ismailari.com/blog/matlabde-fonksiyon-girdilerinde-varsayilan-degerler-kullanabilir-miyiz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MATLAB&#8217;deki for döngüsü hakkında bilmedikleriniz</title>
		<link>http://ismailari.com/blog/matlabdeki-for-dongusu-hakkinda-bilmedikleriniz/</link>
		<comments>http://ismailari.com/blog/matlabdeki-for-dongusu-hakkinda-bilmedikleriniz/#comments</comments>
		<pubDate>Wed, 27 Nov 2013 09:21:23 +0000</pubDate>
		<dc:creator><![CDATA[İsmail Arı]]></dc:creator>
				<category><![CDATA[Programlama]]></category>
		<category><![CDATA[matlab]]></category>

		<guid isPermaLink="false">http://ismailari.com/?p=4909</guid>
		<description><![CDATA[Diğer dillerin aksine MATLAB&#8217;deki for döngüsünün değişkeni statiktir. Aslında pass by value demek daha doğru olur. Bu ne demek? Hemen bir örnekle göstereyim: A = 1:5; for i = A A = 1; disp(i); end A değişkenini değiştirsek dahi i değişkeni A&#8216;nın ilk halini kullanıyor. 1 2 3 4 5 Bir de şu iki kodun [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Diğer dillerin aksine MATLAB&#8217;deki for döngüsünün değişkeni statiktir. Aslında <em>pass by value</em> demek daha doğru olur. Bu ne demek?  Hemen bir örnekle göstereyim:</p>
<pre class="prettyprint lang-matlab">A = 1:5;

for i = A
    A = 1;
    disp(i);
end</pre>
<p><span id="more-4909"></span><br />
<code>A</code> değişkenini değiştirsek dahi <code>i</code> değişkeni <code>A</code>&#8216;nın ilk halini kullanıyor.</p>
<pre>
     1

     2

     3

     4

     5</pre>
<p>Bir de şu iki kodun farkına bakalım:</p>
<pre class="prettyprint lang-matlab">tic
for i = 1:10000000
%   Bir şeyler yap
end
toc

tic
for i = [1:10000000]
%   Bir şeyler yap
end
toc</pre>
<pre>Elapsed time is 0.027504 seconds.
Elapsed time is 1.501059 seconds.</pre>
<p>İlkinde C&#8217;de olduğu gibi <code>i</code> değişkeni sırasıyla 1&#8242;den 10000000&#8242;a kadarki değere atandı. Fakat ikinci örnekte önce 10000000&#8242;luk bir hafıza açıldı. Ardından döngüye geçildi. İlkini kullanmak daha uygun.</p>
<p>Peki döngü bir vektörde değil de bir matris&#8217;te olsaydı? </p>
<pre class="lang-matlab prettyprint">
A = zeros(4); A(:) = 1:16
</pre>
<pre class="lang-matlab prettyprint">A =

     1     5     9    13
     2     6    10    14
     3     7    11    15
     4     8    12    16
</pre>
<p>O zaman sütunlar üstünde döngü kurmuş olacaktık.</p>
<pre class="lang-matlab prettyprint">i = 1; 
for c = A
    disp(c'); 
    A(:,i) = i; 
    i = i + 1; 
end
</pre>
<pre>
     1     2     3     4

     5     6     7     8

     9    10    11    12

    13    14    15    16
</pre>
<p><code>A</code> döngü içinde değişmiş olmasına rağmen <code>c</code>&#8216;ye yine statik olarak bağlandı.</p>
<pre class="lang-matlab prettyprint">A
</pre>
<pre>
A =

     1     2     3     4
     1     2     3     4
     1     2     3     4
     1     2     3     4

</pre>
]]></content:encoded>
			<wfw:commentRss>http://ismailari.com/blog/matlabdeki-for-dongusu-hakkinda-bilmedikleriniz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ismailari.com&#8217;u destekleyin</title>
		<link>http://ismailari.com/blog/ismailari-comu-destekleyin/</link>
		<comments>http://ismailari.com/blog/ismailari-comu-destekleyin/#comments</comments>
		<pubDate>Wed, 27 Nov 2013 08:45:01 +0000</pubDate>
		<dc:creator><![CDATA[İsmail Arı]]></dc:creator>
				<category><![CDATA[Genel]]></category>

		<guid isPermaLink="false">http://ismailari.com/?p=4907</guid>
		<description><![CDATA[Sevgili okurlar, bildiğiniz gibi ismailari.com&#8217;da bilimsel programlama adına birçok yazı paylaşıyorum. Umarım faydasını görüyorsunuzdur. Tahmin edeceğiniz üzere ismailari.com için barındırma (hosting) hizmeti alıyorum. Hizmet aldığım Webfaction firması affiliate program uyguluyor; sizin referansınızla barındırma alan kişinin ödediği paranın onda biri kadar sizin de ödenmiş paranız oluyor. Benim kullanıcı adımı referans vererek barındırma hizi alırsanız ismailari.com&#8217;u desteklemiş [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Sevgili okurlar, bildiğiniz gibi ismailari.com&#8217;da bilimsel programlama adına birçok yazı paylaşıyorum. Umarım faydasını görüyorsunuzdur. Tahmin edeceğiniz üzere ismailari.com için barındırma (<em>hosting</em>) hizmeti alıyorum. Hizmet aldığım Webfaction firması <em>affiliate</em> program uyguluyor; sizin referansınızla barındırma alan kişinin ödediği paranın onda biri kadar sizin de ödenmiş paranız oluyor. Benim kullanıcı adımı referans vererek barındırma hizi alırsanız ismailari.com&#8217;u desteklemiş olursunuz. Webfaction&#8217;ın hizmetinden fazlasıyla memnunum. İlgilenenler olursa <a href="https://www.webfaction.com/signup/?affiliate=ariismail">linki burada</a>. Sevgiler, iyi bloglanmalar.</p>
]]></content:encoded>
			<wfw:commentRss>http://ismailari.com/blog/ismailari-comu-destekleyin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MATLAB&#8217;de i ve j değişkenleri</title>
		<link>http://ismailari.com/blog/matlabde-i-ve-j-degiskenleri/</link>
		<comments>http://ismailari.com/blog/matlabde-i-ve-j-degiskenleri/#comments</comments>
		<pubDate>Mon, 25 Nov 2013 13:35:06 +0000</pubDate>
		<dc:creator><![CDATA[İsmail Arı]]></dc:creator>
				<category><![CDATA[Programlama]]></category>
		<category><![CDATA[matlab]]></category>

		<guid isPermaLink="false">http://ismailari.com/?p=4902</guid>
		<description><![CDATA[MATLAB kodluyorsanız i ve j&#8216;yi değişken olarak kullanmamanız tavsiye edilir. Çünkü bunlar karmaşık sayıların sanal kısımlarını ifade ederken kullanılır. Fakat yeni sürümlerde bu kafa karışıklığı ortadan kaldırıldı. Artık başına 1 koyarak 1i veya 1j ile sanal kısımları oluşturmak mümkün. Örneğin: >> 2 + 1i ans = 2.0000 + 1.0000i >> 3 - 5i ans = [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>MATLAB kodluyorsanız <code>i</code> ve <code>j</code>&#8216;yi değişken olarak kullanmamanız tavsiye edilir. Çünkü bunlar karmaşık sayıların sanal kısımlarını ifade ederken kullanılır. Fakat yeni sürümlerde bu kafa karışıklığı ortadan kaldırıldı. Artık başına 1 koyarak <code>1i</code> veya <code>1j</code> ile sanal kısımları oluşturmak mümkün. Örneğin:</p>
<pre class="prettyprint lang-matlab">
>> 2 + 1i</pre>
<pre>ans =
   2.0000 + 1.0000i</pre>
<pre class="prettyprint lang-matlab">>> 3 - 5i</pre>
<pre>ans =
   3.0000 - 5.0000i
</pre>
]]></content:encoded>
			<wfw:commentRss>http://ismailari.com/blog/matlabde-i-ve-j-degiskenleri/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bir kümedeki en küçük standart sapmaya ait altkümeyi bulma</title>
		<link>http://ismailari.com/blog/bir-kumedeki-en-kucuk-standart-sapmaya-ait-altkumeyi-bulma/</link>
		<comments>http://ismailari.com/blog/bir-kumedeki-en-kucuk-standart-sapmaya-ait-altkumeyi-bulma/#comments</comments>
		<pubDate>Sun, 24 Nov 2013 18:49:37 +0000</pubDate>
		<dc:creator><![CDATA[İsmail Arı]]></dc:creator>
				<category><![CDATA[Programlama]]></category>
		<category><![CDATA[Teori]]></category>
		<category><![CDATA[algoritma]]></category>
		<category><![CDATA[matlab]]></category>

		<guid isPermaLink="false">http://ismailari.com/?p=4892</guid>
		<description><![CDATA[Elimizde N boyutlu bir küme olsun. Bu kümenin K boyutlu altkümelerinden en küçük standart sapmaya ait olanını nasıl buluruz? İnsanın ilk olarak aklına K eleman sayılı tüm altkümeleri sırasıyla denemek geliyor. Bunu nchoosek ile yapabiliriz. N = 20; K = 10; x = rand(N,1); C = nchoosek(x, K); tic min_s = realmax; for i = [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Elimizde <code>N</code> boyutlu bir küme olsun. Bu kümenin <code>K</code> boyutlu altkümelerinden en küçük standart sapmaya ait olanını nasıl buluruz?</p>
<p>İnsanın ilk olarak aklına <code>K</code> eleman sayılı tüm altkümeleri sırasıyla denemek geliyor. Bunu <code><a href="http://www.mathworks.com/help/matlab/ref/nchoosek.html">nchoosek</a></code> ile yapabiliriz. </p>
<pre class="lang-matlab prettyprint">N = 20;
K = 10;
x = rand(N,1);
C = nchoosek(x, K);

tic
min_s = realmax;
for i = 1:size(C,1)
    s = std(C(i,:));
    if s < min_s
        min_s = s;
        en_iyi_C = C(i,:);
    end
end
toc</pre>
<p>Benim bilgisayarımda 8.33 s tuttu:</p>
<pre>Elapsed time is 8.329337 seconds.</pre>
<p>Altküme sayısı $\frac{20!}{10!\times 10!} = 184756$. Küçük bir sayı. Peki <code>N</code> 100 olsaydı, <code>K</code> da 50 olsaydı ne yapacaktık? Altküme sayısı $\frac{100!}{50! \times 50!} = 100891344545564150000000000000$ olacaktı. Bir hayli (!) büyük bir sayı. Buna hafıza yetmez dediğinizi duyuyorum. Evet, buna bilgisayardaki beyin yetmez. Ama bizde <a href="http://www.youtube.com/watch?v=u_FwV2Oc3Bc">beyin bedava</a>, onu kullanalım.</p>
<p>Önce elemanları sıralayalım:</p>
<pre class="prettyprint lang-matlab">N = 100;
K = 50;
x = rand(N,1);
tic
[x_s, ind] = sort(x);</pre>
<p>Şimdi de her <code>K</code> boyutlu ardışık dizilimde standart sapmayı hesaplayalım. </p>
<pre class="prettyprint lang-matlab">min_s = realmax;
for i = 1:(N-K+1)
    s = std(x_s(i:(i+K-1)));
    if s < min_s
        min_s = s;
        en_iyi_ind = ind((i:(i+K-1)));
    end
end
toc
</pre>
<p>Algoritmamız bu kadar. Sıralamanın karmaşıklığı $O(N \log N)$, sonraki döngü $O(NK)$. Sonuçta karmaşıklık bunların küçüğü.</p>
<p>Artık 1000 elemanlı bir kümenin 500 elemanlı en düşük standart sapmaya ait altkümesini hesaplamak 0.070 s sürüyor!</p>
]]></content:encoded>
			<wfw:commentRss>http://ismailari.com/blog/bir-kumedeki-en-kucuk-standart-sapmaya-ait-altkumeyi-bulma/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
