Soru sorEski Matristen Farklı Boyutta Yeni Matris Üretme
mt361 tarafından 5 yıl önce soruldu

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?

4 Cevap
ktu tarafından 5 yıl önce cevaplandı

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.

mt361 tarafından 5 yıl önce cevaplandı

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?

hakkans Yönetici tarafından 5 yıl önce cevaplandı

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

mt361 tarafından 5 yıl önce cevaplandı

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.