How can I get system Matrix A,B and C for my state space system of Spring-Mass damper system of n blocks arranged in uniform way?

8 vues (au cours des 30 derniers jours)
I am trying to generate equations of motion for Spring mass (damper) system consisting of N blocks. I want to write such a function that automatically creates equations of motion(that fills these matrices A,B,C) just by passing a value of number of masses in a function input arguement. This is what I want ideally. I know the pattern for equation of motion. My system matrix A is something like
[ -2k k 0 0... 0(n);
k -3k k 0.... 0(n);
0 k -3k k 0... 0(n);
0 0 k -3k k 0 .... 0(n);
.. 0(n);
.. 0(n);
0 0............. k -2k ]
where k is stiffness of the spring. This matrix has some kind of uniform pattern as you can see. How can I write a function to this?
  3 commentaires
Sandeep Parameshwara
Sandeep Parameshwara le 1 Déc 2019
Modifié(e) : Sandeep Parameshwara le 1 Déc 2019
With n as my function input argument, what i need is n by n matrix as output. So 0(n) just tells that its last zero in n'th column. Sorry for the confusion. Its just a zero. I hope its clear now. So I am looking to generate n by n matrix with above pattern.
Sandeep Parameshwara
Sandeep Parameshwara le 1 Déc 2019
matrix.PNG
Here's a sample matrix to avoid any confusion with my question. Suppose I want to write a function to this pattern(similar to my question above) how do I write a general function?

Connectez-vous pour commenter.

Réponse acceptée

Dhananjay Kumar
Dhananjay Kumar le 4 Déc 2019
I think this should be very simple (Writing the generalized matrix in the image). You just need to know array indexing and for loop in MATLAB.
Take as input, a k vector, and a constant n.
Create a nxn zeros-only-matrix A with the help of zeros function.
For n>=3, loop through i= 2 to n-1, and update the matrix values according to the values in the image (you will need to write just 3 assgnment statements inside the for loop for the three values). For i=1 and i=n update the matrix values outside the loop (total 4 assignment statement).
For n<3, you can update the values in the matrix without loop.
Please first try yourself and then post your doubts here.
  3 commentaires

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Programming dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by