creating a diagonal matrix?

2 Ansichten (letzte 30 Tage)
FULYA  SEREF
FULYA SEREF am 12 Dez. 2013
Beantwortet: Jos (10584) am 13 Dez. 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!

Antworten (3)

Simon
Simon am 12 Dez. 2013
  2 Kommentare
FULYA  SEREF
FULYA SEREF am 12 Dez. 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 am 13 Dez. 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.

Melden Sie sich an, um zu kommentieren.


Sean de Wolski
Sean de Wolski am 12 Dez. 2013
diag(q(1,2,3))
And for more info:
doc diag
  1 Kommentar
FULYA  SEREF
FULYA SEREF am 12 Dez. 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).

Melden Sie sich an, um zu kommentieren.


Jos (10584)
Jos (10584) am 13 Dez. 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)

Kategorien

Mehr zu Operating on Diagonal Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by