Soru sorTic-Toc Komutlu Matlab Programı
matlabyardim2020 tarafından 4 yıl önce soruldu

Sonsuz döngü içerisinde bilgisayar tarafından sürekli olarak 0 ve 1 sayıları rastgele üretilen ve bu döngüden çıkış şartı ise üretilen sıfır ve birlerin sayısı arasındaki farkın 500’ü aşması. Bu koşul sağlanıp programı sonlandırırken üretilen bir ve sıfırların sayısı ve geçen süre formatlı bir biçimde virgülden sonra tek haneyle ekrana basılan bir Matlab programını nasıl yazabilirim?
Command Window:
Üretilen Sıfır Sayısı: xxxxx
Üretilen Bir Sayısı: xxxxx (+500/-500)
Geçen Süre: x,x Saniye

6 Cevap
En iyi cevap
hakkans Yönetici tarafından 4 yıl önce cevaplandı

Geçen süreyi virgülden sonra birçok haneyle göstermemek için round() komutunu kullanabilirsiniz. Aşağıdaki parçayı inceleyin:

tic;
...%kodunuz
gecenzaman=toc;
gecenzaman=round(gecenzaman,1);

 

Yukarıdaki komut toc ile elde ettiğiniz geçen zamanı virgülden sonra tek basamaklı yazmanızı sağlayacaktır. Sonsuz döngüyü sağlamak için bir while şartı kullanmanız gerekiyor. Üretilen 0 ve 1 sayılarının arasındaki farkı takip edebilmek içinse sayının kaç tane üretildiğini bir sayaç ile takip etmeniz lazım. Örnek olarak aşağıya bir sıfır sayacı yazıyorum:

sifirsayac=0; %Önce sıfır olarak belirlememiz lazım
%while dongusu
r=randi([0 1]);
fprintf(‘%d’, r);
if r==0
sifirsayaci=sifirsayaci+1;
end

Açıklamalarım parça parça oldu biliyorum ama sitemizin yaklaşımı gereği bu tür sorularda tüm çözümü vermektense yaklaşımları aktarmaya çalışıyoruz.

sayginer Yönetici tarafından 4 yıl önce cevaplandı

Nerede takıldınız?

matlabyardim2020 tarafından 4 yıl önce cevaplandı

Merhaba Osman Bey,
r=randi([0 1]);
fprintf('%d', r);
Rastgele 0 ve 1 komutu için bu satırları yazabildim fakat bu durumu nasıl sonsuz döngüye sokup daha sonrasında da üretilen sıfır ve birlerin sayısı arasındaki farkın 500 olduğu çıkış komutunu nasıl yazacağımı bilmiyorum. Yardımcı olabilirseniz çok sevinirim..

matlabyardim2020 tarafından 4 yıl önce cevaplandı

Yardımlarınız için çok teşekkür ederim. Programımı çalıştırdım fakat tic-toc komutunu kullandığım için Command Window'da ilk satıra otomatik olarak "Elapsed time is 0.209789 seconds." yazıldı. Bunu hangi komut satırı ile "Geçen Süre: x,x Saniye" olarak yazabilirim?

sayginer Yönetici tarafından 4 yıl önce cevaplandı
Basla = tic;
% BURADA ISLEMLERINIZ
Bitir = toc(Basla);
fprintf('Toplam sure: %d dakika,%f saniye\n', floor(Bitir/60), rem(Bitir,60));
matlabyardim2020 tarafından 4 yıl önce cevaplandı

Yardımlarınız için çok teşekkür ederim. Sayenizde programımı başarılı bir şekilde çalıştırabildim. Herkese iyi çalışmalar dilerim, kolay gelsin..