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)]
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 –
Ich verstehe nicht. Können Sie Ihre Frage bearbeiten und uns ein minimales Beispiel zeigen? –
Hat die neue Antwort nicht geholfen? –