Soru sorMATRİSİN SIFIR SÜTUNUNU SİLDİRMEK
zynparslanturk tarafından 7 yıl önce soruldu

Bir matristen 0 olan sütunları sildirmek istiyorum. Mesela;
2        3        0         7         0
0        5        0         4         0
11       6       0         5         0
19      18      0        16        0
3        9        0         7         0
4        7        0         6         0
 
Bu 6x5lik matrisin 3. ve 5. sütunlarını sildirmek istiyorum ama her seferinde 0 sütunlarının yerleri değişiyor. mesela bir sonraki matriste 2. ve 4. sütunlar 0 sütunu olabilir. Nadıl yapabilirim.
Saygılarımla

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

Merhaba, aşağıdaki örnek kodu inceleyebilirsiniz:

%MATLABTurkiye.com
clc; clear all;
A = randi([0 4],5,5) %Rastgele 5e 5lik bir matris olusturalim

[satir sutun]= find(A==0); %0larin konumlarini bulalim
sutun = unique(sutun, 'rows', 'first'); %tekrar eden konumları silelim-Bir sutunda birden fazla sıfır var ise onu 1 kere alalım

for i=1:length(sutun) %Döngüyü sütun sayısı kadar döndürelim
 [satir sutun]= find(A==0); %Her döngüde 0 olan sütu değişeceği için tekrar =ların sırasını bulalım
 A(:,sutun(1)) = [] %Sıfır olan sütunu silelim
end
%MATLABTurkiye.com
zynparslanturk tarafından 7 yıl önce cevaplandı

Merhaba, teşekkür ederim. İstediğim şekilde çalışıyor fakat ben şunu istiyorum, bir sutundaki bütün elemanlar 0 ise silinsin. Yani 6 satırdan 6sı da 0 olursa sutun silinsin, yani 6 satırdan 1 tanesi 0 ama diğerleri sayı ise sutun silinmesin. Bunu nasıl yapabiilirim?

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

Aşağıdaki kodu inceleyebilirsiniz:

M = [1 0 3;0 0 0;1 0 3] %Örnek Matris
M( :, ~any(M,1) ) = [] %Sütunları sil
zynparslanturk tarafından 7 yıl önce cevaplandı

Çok teşekkür ediyorum. Benim için çok önemliydi.