Soru sorMATLAB GUI'ye karşılaştırma yaptırmak
DENİZ tarafından 4 yıl önce soruldu

Arkadaşlar merhaba;
Ben ayıklama sonucundan aldığım veriyle 'karşılaştırmak istediğiniz sayıyı giriniz' bölümüne yazdığım sayıdan 'kaç tane büyük sayı var ? 'karşılaştırıp karşılaştırma sonucuna yazdırmak istiyorum. Fakat ne yaptıysam karşılaştırma yapamadım. Yardımcı olabilir misiniz?    

9 Cevap
ekremt Yönetici tarafından 4 yıl önce cevaplandı

Merhaba,
Ne yaptığınızı, kodunuzun ilgili kısmını veya hatanızı paylaşırsanız daha rahat sonuca ulaşabiliriz.

DENİZ tarafından 4 yıl önce cevaplandı

Aslında bunu kendi uygulamam uyarlamaya çalışmıştım fakat uyarlayamadım. Bunu da Sayginer beyin bir başka soruya verdiği cevaptan almıştım.

A=[1 2 3 2; 6 3 4 -5; 7 8 2 3] %3e 4luk bir matris olusturalim
% Buradaki sayaclari degerleri ayirmak icin kullaniyoruz
EksiSayaci = 1;
ArtiSayaci = 1;
for i=1:3      %Satırlarda dolasmak için i indisi
    for j =1:4 %Sutunlarda dolasmak için j indisi
        if A(i,j) < 0; %Ornegin bir eleman negatifse Eksi elemanlar matrisine yaziyoruz
            EksiElemanlar(EksiSayaci) = A(i,j);
            EksiSayaci = EksiSayaci+1; %Eksi sayaci ilk 1 ile basliyor yani ust satirdaki eksi elemanlar vektorunun birinci kutusuna yaziyor
            %gelecek sefer ikinci jutuya yazmasi icin 1 arttiriyoruz.
        else
            ArtiElemanlar(ArtiSayaci) = A(i,j);
            ArtiSayaci = ArtiSayaci+1;
        end
    end
end
ArtiElemanlar
EksiElemanlar
ekremt Yönetici tarafından 4 yıl önce cevaplandı

Öncelikle bahsettiğiniz kod parçası çalışıyor. Verilen A matrisindeki pozitif ve negatif sayıları ayırabiliyor.
Ardından aşağıda belirttiğim kod parçasında karşılaştırma için bir değer verdikten sonra artısayılar içinde kendisinden büyük olanları bulabilirsiniz. Bunu daha sonra kullanıcıdan veri alarak, isterseniz pozitif ve negatif sayıları Satır matrisi haline getirip hepsinin içinde veya ayrı ayrı pozitif negatif içinde kontrol edebilirsiniz. Yapmak istediğiniz kod çalışmasına göre güncellenebilir.
 

karsilastirma = 3;
sayac = 1;

for i = 1:length(ArtiElemanlar)
    if karsilastirma < ArtiElemanlar(i)
        Sonuclar(sayac) = ArtiElemanlar(i);
        sayac = sayac+1;
    end
end
DENİZ tarafından 4 yıl önce cevaplandı

Öncelikle teşekkürler.Sizin attığınız kodu uyarlamaya çalıştığımda da hata veriyor . Set kısmına geldiğimde söz dizimi ve ayrıştırma hatası alıyorum.

A = get(handles.karsilastirmasayisi,'string');
B = str2double (A);
karsilastirma = B ;
sayac = 1;
for i = 1:length(X9)
if karsilastirma < X9(i)
B(sayac) = X9(i);
sayac = sayac+1;
end
end
set = (handles.karsilastirmasonucu,'double',num2str(B));
% X6 = get(handles.ayiklamasonucu,'string');
% X7 = strsplit(X6 , ' ');
% X8 = string (X7);
% X9 = str2double(X8);
DENİZ tarafından 4 yıl önce cevaplandı

Öncelikle teşekkürler.Sizin attığınız kodu uyarlamaya çalıştığımda da hata veriyor . Set kısmına geldiğimde söz dizimi ve ayrıştırma hatası alıyorum.

A = get(handles.karsilastirmasayisi,'string');
B = str2double (A);
karsilastirma = B ;
sayac = 1;
for i = 1:length(X9)
if karsilastirma < X9(i)
B(sayac) = X9(i);
sayac = sayac+1;
end
end
set = (handles.karsilastirmasonucu,'double',num2str(B));
% X6 = get(handles.ayiklamasonucu,'string');
% X7 = strsplit(X6 , ' ');
% X8 = string (X7);
% X9 = str2double(X8);
ekremt Yönetici tarafından 4 yıl önce cevaplandı

Merhaba,
Aldığınız hatayı paylaşma şansınız var mı ?
Set kısmına kadar hata yok olduğunu aslında bir messagebox ile de test etmenizi tavsiye edebilirim.
Büyük ihtimalle ayiklamasonucu kısmı sizin edit text kısmınız. Aşağıdaki gibi deneyebilir misiniz ?
 

yazi = sprintf('Yazi Kısmı Burasıdır. Elde Edilen Sonuç Değeri ise = %0.4f', deger);
set(handles.edit1, 'String', yazi);
DENİZ tarafından 4 yıl önce cevaplandı

Teşekkürler yardımlarınız için.

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

Rica Ederim, Çözüme ulaşamadıysanız tekrar sorunuzu iletebilirsiniz farklı bir durum varsa da. İyi Çalışmalar

DENİZ tarafından 4 yıl önce cevaplandı

Sizin attığınız kodlarda çalışıyor ayrıca bana çok yardımcı oldu teşekkür ediyorum. Ben dokümanlarımı karıştırırken find hazır komutunu gördüm ve onu kullandım. Tekrardan teşekkür ediyorum.