creating a diagonal matrix?

1 view (last 30 days)
FULYA  SEREF
FULYA SEREF on 12 Dec 2013
Answered: Jos (10584) on 13 Dec 2013
Hi,
I want to create a diagonal matrix which has the elements like this: q1,q1,q2,q2,...,qm,qm
q is a function and has m different values for m different x-values
Could anyone help me please?
Thank you!

Answers (3)

Simon
Simon on 12 Dec 2013
  2 Comments
FULYA  SEREF
FULYA SEREF on 12 Dec 2013
thank you very much but as you see I have the elements who are the same for two times. I suppose I need a loop. I can't enter these values by hand. Because first I will define the function q. I need m different values of q for m different x values. And I have to create a matrix whose diagonal is for example; q(1),q(1),q(2),q(2), ,....,q(m),q(m).
Simon
Simon on 13 Dec 2013
So, if you have your function q, what will be the output? Is it a m-element vector? Or just a scalar value?
If you have your m-element vector X, you can do
ind = 1:m;
ind = [ind; ind];
diag(X(ind(:)))
If you get scalars only you have to create it in a loop.

Sign in to comment.


Sean de Wolski
Sean de Wolski on 12 Dec 2013
diag(q(1,2,3))
And for more info:
doc diag
  1 Comment
FULYA  SEREF
FULYA SEREF on 12 Dec 2013
thank you very much but as you see I have the elements who are the same for two times. I suppose I need a loop. I can't enter these values by hand. Because first I will define the function q. I need m different values of q for m different x values. And I have to create a matrix whose diagonal is for example; q(1),q(1),q(2),q(2), ,....,q(m),q(m).

Sign in to comment.


Jos (10584)
Jos (10584) on 13 Dec 2013
Like this?
q = [10 20 30] ;
q = q(floor(1:.5:numel(q)+.5)) % expand (there are many other ways to do this!)
diag(q)

Categories

Find more on Operating on Diagonal Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!