Wenn die Eingabe-Ausdruck enthält eine symbolische variable mit dem VPA-Funktion statt?
Im tring subtrahieren der diagonalen Werte mit eigval
und speichern Sie den neuen Wert in der matrix Diagonal
:
CovarianceMatrix=[8 -3 1;2 1 0;3 4 5];
Col=3;
Row=3;
store=1;
syms eigval;
for loop1= Col:-1:1
Rw=1;
syms eigval;
for loop2= 1:Row
if Rw==loop1
Diagonal= (CovarianceMatrix(Rw,loop1)-eigval);
Fix_Diagonal_2(loop2,store)=sym(Diagonal);
else
Diagonal= CovarianceMatrix(Rw,loop1);
Fix_Diagonal_2(loop2,store)=Diagonal;
end
Rw=Rw+1;
loop1=loop1-1;
if loop1==0
loop1=3;
end
end
store=store+1;
end
Aber, denn ich bin mit einer symbolischen variable gibt es eine Fehlermeldung:
The following error occurred converting from sym to double:
Error using mupadmex
Error in MuPAD command: DOUBLE cannot convert the input expression into a double
array.
If the input expression contains a symbolic variable, use the VPA function
instead.
Wie kann ich dieses Problem lösen? Ich möchte kopieren Sie die neue subtrahiert den Wert in der diagonalen der matrix.
- Bitte verwenden Sie korrekte Einrücken von code, es ist sehr schwer zu Lesen, Codes ohne.
- Was ist symbolisch? Du hast den code nicht lauffähig. Einige einfache input-Werte, die sich replizieren, Ihr Problem. Und poste die gesamte Fehlermeldung, einschließlich der Zeilennummern, welche Zeile in deinem code den Fehler auslöst?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein einfaches Stück code, dass Exponate, die den gleichen Fehler also vielleicht wird es helfen, zu klären:
welche im R2013b (und R2015b) gibt
vpa
kann hier nicht verwendet werden, weilx
ist eine symbolische variable, die nicht definiert wurden, eher als einen symbolischen Wert (vpa(d)
hat eine belanglos-Effekt).Für Ihren code, der den Fehler wahrscheinlich Auftritt, auf diese Zeile:
Können Sie nicht verwenden
vpa
weileigval
ist eine symbolische variable mit keinem Wert. Sie können möglicherweise Ihr problem lösen, indem manFix_Diagonal_2
zusym
:Werden Sie wahrscheinlich wollen, zu tun, die außerhalb der
for
Schleifen. Ich sehe auch nicht ein, warum Sie die Neudefinitioneigval
bei jeder iteration der äußeren Schleife.Diagonal
ist schon symbolisch, so gibt es keinen Sinn zu versuchen, Neufassung es. Es istFix_Diagonal_2 = sym(Fix_Diagonal_2);
. Dein code ist noch nicht ausführbar, da Sie noch nicht angegebenFix_Diagonal_2
. Vielleicht brauchen Sie nur preallocate es als Nullen: so etwas wieFix_Diagonal_2 = sym(zeros(size(CovarianceMatrix)));
? Und du bist immer noch neu definiereneigval
bei jeder iteration der äußeren Schleife.