for-Schleife vermeiden < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 16:16 Fr 25.06.2010 | Autor: | Fubinho |
Hi!
Kann mir jemand vielleicht helfen?
Ich möchte zu einem n-dimensionalen Vektor x und n Matrizen [mm] A_i [/mm] die Summe der Produkte [mm] x_i*A_i [/mm] bilden, das ganze aber ohne for-Schleife.
Die Summe der Matrizen [mm] A_i [/mm] beispielsweise ließe sich ja mit sum(A,3) bzw.
die Summe der Vektorkomponenten mit sum(x,2) oder einfach sum(x) berechnen.
Lässt sich das auch irgendwie miteinander verknüpfen?
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 18:02 Fr 25.06.2010 | Autor: | Frasier |
Hallo Fubinho,
welche Dimension haben denn die [mm] A_i [/mm] und in welcher Form liegen sie vor? Kannst du mal ein Beispiel mit n=3 konstruieren?
lg
F.
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 18:37 Fr 25.06.2010 | Autor: | Fubinho |
Hallo Frasier!
Die [mm] A_i [/mm] sind symmetrisch, Höhe beliebig.
Ich hab das halt einfach so gemacht:
G=zeros(n)
for i=1:n
G=G+x(i)*A(:,:,i)
end
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 22:50 Fr 25.06.2010 | Autor: | Frasier |
Hi,
wenn du dieses x auf die Größe der [mm] A_i [/mm] bringen kannst geht es einfach mit sum.
1: | x=[2 4 6];
| 2: | A(:,:,1)=ones(3);
| 3: | A(:,:,2)=ones(3)*2;
| 4: | A(:,:,3)=magic(3);
| 5: | n=numel(x);
| 6: | B=zeros(n,n,n);
| 7: | for k=1:n
| 8: | B(:,:,k)=ones(n)*x(k);
| 9: | end
| 10: | sum(A.*B,3); |
Es sind aber wohl nur Variationen eines Themas.
lg
F.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:03 Sa 26.06.2010 | Autor: | Fubinho |
Hmm, hab mal die Variation ausprobiert, leider auch nicht schneller.
Trotzdem besten Dank!
|
|
|
|