Soru sorYazısal değişkenleri matrise atama
harun23 tarafından 7 yıl önce soruldu


 
merhaba matriste yazısal bir değişkeni nasıl atıyabiirim resimdeki gibi nasıl yapabilirim yardımcı olurmusunuz

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

Merhaba,
Aşağıdaki örnekte olduğu gibi bir string matrisi oluşturabilirsiniz:

A = {'U','0','0'; '0','M','0'; '0','0','U'}

 
A =

    'U'    '0'    '0'
    '0'    'M'    '0'
    '0'    '0'    'U'

harun23 tarafından 7 yıl önce cevaplandı

cevabınız için teşekkürler bide bu matrisi eye(3,3) lük bir matrisle nasıl çaarpabilirim olmuyor

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

MATLAB'in mantığı düşündüğünüz gibi değil. Nümerik bir değer ile (eye(3,3)) bir metni çarpmanız mümkün değil ne yazık ki.

harun23 tarafından 7 yıl önce cevaplandı

hocam c dilinde yazisal degiskeni sayisal olarak atayabiliyoruz matlab c dilinde yazilmis acaba matlab yapamazmiyiz

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

Merhaba, verdiğiniz örnekte farklı harfler değer olarak aynı rakama (1) karşılık gelmekte. Bu matriste döngüsel bir şekilde U M U T U M U T … harfleri mi var elinizde? Eğer öyleyse bu matriste eleman yerlerinden hangi karakterlere denk geldiğini hesaplayabilirsiniz. Mesela satır ve sütun no tek sayı ise (mod(ii, 2)==1 gibi bir şartla bunu kontrol edebilirsiniz) elinizdeki harf U olacaktır. M ve T harfleri için de mod(ii, 4)= 2 veya 0 şartları koyabilirsiniz. Burada ii değişkeni satır veya sütun numarasını temsil ediyor.
Harflerin bulunduğu bir string matrisi ile bir sayı matrisini çarpmanız mümkün değil. Tamamen sayılardan oluşan iki matrisi çarpıp sonra bu şekilde eleman yerlerini kontrol ederek bir string matrise geri dönmeniz mümkün. Öte yandan bir "harf" matrisini bir birim matris ile çarpmanın ne anlama gelmesi gerekir orayı anlayamadım.

harun23 tarafından 7 yıl önce cevaplandı

"Tamamen sayılardan oluşan iki matrisi çarpıp sonra bu şekilde eleman yerlerini kontrol ederek bir string matrise geri dönmeniz mümkün" hakan bey öncelikle cevabınız için teşekkürler yukarıda yazdığınız gibi bir örneği rica etsem yapabilirmisiniz ben yapamadım

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

Benim kastettiğim aşağıdaki şekilde yapılıyor ama sorunuzun bu olmadığını düşünüyorum. Matriste ana çaprazda (diagonal) eleman gelmezse bu kodun yapabileceği bir şey yok çünkü.

mat1=eye(3, 3);
mat2=[0 0 0; 0 1 0; 0 0 0];
mat3=mat2*mat1
mat3=
     0     0     0
     0     1     0
     0     0     0

mat3 ü elde ettikten sonra şöyle bir şey yapabiliriz:

for ii=1:3
    if mat3(ii, ii) == 1       
        if mod(mat3(ii,ii),2) == 1
            mat4(ii, ii) = 'U';
        else
            mat4(ii, ii) = 'M';
        end
    end
end

Bu kod sadece U ve M harfleri yerleştirecektir. mat4 matrisi şu şekilde olacaktır:

  
 U

Ana çaprazda bulunmayan elemanlara sıfır eklemek için ayrı bir döngü gerekecektir ve bu algoritmada son satırda 0 olduğu için 3. bir satır yok. Bu da eklenebilir.

harun23 tarafından 7 yıl önce cevaplandı

ilginiz icin tesekkurler