Matlab'te Matris İşlemi

Başlatan vitruvius, 15 Nisan 2012, 15:31:56

vitruvius

Merhaba aşağıdaki resimde verdiğim matrislerle yapılan işlemi matlab'te nasıl yapabilirim acaba? K matrisinde bilinmeyen olduğu için tanımlayamadım.

Teşekkür ederim.


ferdem

k1 = sym('k1');
k2 = sym('k2');
k3 = sym('k3');
kvektor=[k1 k2 k3];

Şeklinde harfli ifadelerden oluşan vektör oluşturabilirsiniz. Bu vektörü sayılardan oluşan matrisle çarpabilirsiniz:
a=[1 2 3; 4 5 6; 7 8 9];
kvektor=[k1 k2 k3].';
a*kvektor
 
ans =
 
   k1 + 2*k2 + 3*k3
 4*k1 + 5*k2 + 6*k3
 7*k1 + 8*k2 + 9*k3

OptimusPrime

ferdem
bir matrisi vektöre ve vektörüde matrise dönüştürmenin kısa bir yolu var mı???
https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

lordsandman

Alıntı yapılan: OptimusPrime - 15 Nisan 2012, 21:40:08
ferdem
bir matrisi vektöre ve vektörüde matrise dönüştürmenin kısa bir yolu var mı???

Örneğin "A" 10 elemanlı bir matris ise reshape(A',10,1) bunu vektöre dönüştürür

"B" vektörünüz ise; C = vec2mat(B,kolon) matrise dönüştürür, fakat her seferinde 1 satır olmak üzere. vec2mat fonksiyonunun yardımına bakabilirsiniz

vitruvius

#4
Hocam sI kısmında hata alıyorum.

I=eye(3)
I =
     1     0     0
     0     1     0
     0     0     1
>> (s*I)-A-(B*K)


Hata şu şekilde:

Error using InputOutputModel/plus (line 64)
Invalid operand. Variables of type "sym" cannot be combined with other models.

Error in InputOutputModel/minus (line 451)
         M = M1 + (-M2);


s'i matrisin  içine nasıl sokabilirim? Çünkü birim matrisin köşegenine elimle s koymaya çalıştığımda da garip bir formatta oluyor ve yine kullanamıyorum.
Transfer function from input 1 to output...
 #1:  s
 
 #2:  0
 
 #3:  0
 
Transfer function from input 2 to output...
 #1:  0
 
 #2:  s
 
 #3:  0
 
Transfer function from input 3 to output...
 #1:  0
 
 #2:  0
 
 #3:  s

ferdem

#5
Bilemiyorum vitruvius :)
OptimusPrime vektör matris dönüşümü için arkadaşın da yazdığı gibi reshape i kullanıyorum. Mesela 3 e 3 matrisi 1 e 9 satır vektörü yapmak için reshape(a,1,9) kullanıyorum, reshape(a,3,3) 1 e 9 vektörü 3 e 3 matris yapmak için de kullanılabilir. reshape önce sütunları alıp ipe diziyor sonra yeniden sıralıyor. Transpose ile düzenleme yapılabilir. Bir de matlab de sevdiğim fonksiyon repmat var. repmat ile bir vektörü alt alta veya yan yana koyarak boyutu arttırabiliyoruz.
Mesela a=[1 2 3] satır vektörünü repmat(a,3,2) ile
1 2 3 1 2 3
1 2 3 1 2 3
1 2 3 1 2 3
şeklinde bir matrise dönüştürmek mümkün. Kolay gelsin.

vitruvius

s'i tf olarak değil de sym('s') olarak tanımlayınca işlem yaptı, determinantını bile aldı =)

Konu çözüldü butonu kalktı mı?