2016-07-17 17 views
0

ich eine Formel haben ein System von Gleichungen in Matrix form.and für die Erstellung es wie unten geschrieben:MATLAB: Erstellen Sie eine Blockdiagonalmatrix

for i=1:n+1  
    for j=1:n+1  
     t(i)=(1/2)*(1+cos(((2*(n-i)+3)*pi)/(2*(n+1))));  
     y(i,j)=t(i)^(j-1);  
    end  
end 

jetzt, was ich tun muss, um einen Block Diagonalmatrix mit schafft Reihen von y separat in jedem Block. Ich meine jede Zeile von y, die nur t(i) Potenzen enthält, sollte dreimal in jedem Block wiederholen, dann nächste Zeile der nächste Block mit drei Zeilen sein. wie folgt aus:

T=[y(t1) 0 0;0 y(t1) 0;0 0 y(t1); ... ;y(t n+1) 0 0;0 y(tn+1) 0;0 0 y(tn+1)]  

Antwort

0

So, da ich nicht in formatiertem Modus Ich versuche kommentieren können Ihre Frage die folgende Art und Weise zu interpretieren:

Also, wenn

y = 

1  2  
3  4 

Interpretation Möglichkeit a)

T = 
1  2  0  0  0  0  3  4  0  0  0  0 
0  0  1  2  0  0  0  0  3  4  0  0 
0  0  0  0  1  2  0  0  0  0  3  4 

oder dies b)

0.123.
T = 
1  2  0  0  0  0  0  0  0  0  0  0 
0  0  1  2  0  0  0  0  0  0  0  0 
0  0  0  0  1  2  0  0  0  0  0  0 
0  0  0  0  0  0  3  4  0  0  0  0 
0  0  0  0  0  0  0  0  3  4  0  0 
0  0  0  0  0  0  0  0  0  0  3  4 

Lösung Sie zuerst einen Block erstellen heißt

1  2  0  0  0  0 
0  0  1  2  0  0 
0  0  0  0  1  2 

von temp{1} = kron(I, y(1,:)) Berechnung, wo I = eye(3). Sie führen dann die gleiche Operation für die zweite Zeile aus: temp{2} = kron(I,y(2,:)) und so weiter. Dieses Verfahren kann in einer for-Schleife leicht getan werden:

I = eye(3); 
temp = cell(1,size(y,1)); 
for i = 1:size(y,1) 
    temp{i} = kron(I, y(i,:)); 
end 

Option a)

Das Ergebnis ist jetzt nur: [temp{:}].

Option b)

Hier ist das Ergebnis: blkdiag(temp{:})

+0

Vielen Dank für Ihre Antwort. aber ich denke, ich hatte einen Fehler, um mein Problem zu illustrieren und leider kann ich deine Antwort nicht ändern, um zu verdienen, was ich will. Sie wissen, dass die Matrix diese Form haben muss: a (ti) = [y (ti) 0 0; 0 y (ti) 0; 0 0 y (ti)] y = [a1 0 0 ... 0; 0 a2 ... 0; ...; 0 0 ... an] wissen Sie, in dem Algorithmus, den Sie geschrieben haben, ist jede Zeile von y (i) auf der Diagonalen, aber was ich brauche, wie Sie sehen, ist n matix in einer (i) -Form und macht dann a Blockdiagonalmatrix von ihnen –

+0

Ich verstehe nicht. Können Sie Ihre Frage bearbeiten und uns ein minimales Beispiel zeigen? –

+0

Hat die neue Antwort nicht geholfen? –

0

Sie wissen, habe ich für die Herstellung eines Systems linearer equations.maybe ein Problem hatte, was ich oben schrieb die y(i) es gerade bei der Berechnung machen schwierig für mich. für das Beispiel, das Sie sagte, ich habe dies:

n=3 

Form obigen Gleichung:

t1=0.0381 
t2=0.3087 
t3=0.6913 
t4=0.9619 

jetzt,

y(t)=[1 t t^2 t^3 t^4] 

ich meine

y(t1)=[1.0000 0.0381 0.0014 0.0001] 
y(t2)=[1.0000 0.3087 0.0953 0.0294] 
y(t3)=[1.0000 0.6913 0.4780 0.3304] 
y(t4)=[1.0000 0.9619 0.9253 0.8901] 

aber, da Ich konnte nicht alle berechnen y(i) seperat, schrieb sie in dieser Form

y=[1.0000 0.0381 0.0014 0.0001 
    1.0000 0.3087 0.0953 0.0294 
    1.0000 0.6913 0.4780 0.3304 
    1.0000 0.9619 0.9253 0.8901] 

jetzt sollten zwei Matrizen haben.one:

s=[y(t) 0 0;0 y(t) 0;0 0 y(t)] 
r=[s(t1) ... 0; ... ;0 ... s(tn+1)] 

Sekunde:

d=[ 1 -1  1 -1 
    0  2 -8 18 
    0  0  8 -48 
    0  0  0 32] 
k=y*d 
u=[0 0 0;0 k 0;0 0 0] 
a=[u(t1) ... 0; ... ;0 ... u(tn+1)] 

und diese Matrizen, r und a, sollte 3(n+1) Spalten (in diesem Beispiel 12 Spalten) aufweisen. Ich hoffe, es könnte helfen

+0

Ich denke, Ihre y-Matrix in dem Beispiel fehlt der t^4 Teil. Unter der Annahme, dass die Matrix y mit dem Teil t.4 angegeben ist, denke ich, dass Ihre Matrix s (t1) beispielsweise 3 Zeilen und 3 * 5 = 15 Spalten haben sollte, richtig? Wenn ja, sollte Matrix r 3 * 4 = 12 Zeilen und 15 * 4 = 60 Spalten und nicht 12? Ich verstehe nicht wirklich, wie du aussehen willst. Ist y (t) die Zeile y (t1) und y (t2) und so weiter? Weil ich momentan denke, dass du vielleicht Option b) haben möchtest und temp die Matrizen s (t1), s (t2) .... –

Verwandte Themen