40×108 boyutunda bir matrisin her sütunlarındaki değerlerden en küçük 3 tanesini seçerek 3×108 boyutunda yeni matris oluşturmak istiyorum. Fakat min komutu kullanıldığında her sütunda sadece bir tane en küçük değer seçiyor. İçlerinden en küçük 3 değeri seçtirmek için döngü mü kullanmam gerekiyor yoksa farklı bir fonksiyon mu kullanacağım?
Merhaba
% Matrisiniz x olsun.
sirala=sort(x) % her sütunda ki değerleri küçükten büyüğe doğru sıralayacaktır.
y=sirala(1:3,1:end) % 3×108 lik değerler y isimli matrise atanır.
%Kod otomatize şekilde de yazılabilir.
Cevabınız için çok teşekkür ederim. Peki değerlerin matristeki yerleri değiştirilmeden bu işlem uygulanabilir mi? Yani sütundaki en küçük 3 tane değerin bırakılıp, diğerlerinin sıfır olarak atanması gibi?
Merhaba,
Bunun için mink() fonksiyonu varmış. Matrisin sütun vektörünü alıp bu işlemi uygulayabilirsiniz:
for ii=1:108 sutun=buyukmatris(:,ii) %40x108 lik matris ismi buyukmatris olsun enbuyukuc(:,ii)=mink(sutun,3) end
Detaylı bilgi (İngilizce): https://www.mathworks.com/help/matlab/ref/mink.html
Teşekkürler bunu anladım fakat benim istediğim şeyde değerlerin matristeki yerini koruması gerekiyor. Başka bir matristeki değerlerle çarpım yapabilmem için en küçük değerlerinde yerini koruması gerekiyor.