2017-03-16 8 views
0

メンバーが記号式(その名前はA)である行列(またはベクトル)を作成しました。私がx = [x3 x4 x5 x6 y3 y4 y5 y6]'の代わりにx0 = [500 550 500 500 450 500 555 450]'の代わりにしようとすると、何も起こりません。 x0のクラスはdoubleであり、クラスはxであり、symである。 これは私のコードです:なぜMATLABのシンボリック行列の代入は機能しませんか?

 A =            conj(((x3 - 500)^2 + (y3 - 300)^2)^(1/2)) 
                 conj(((x4 - 500)^2 + (y4 - 300)^2)^(1/2)) 
                 conj(((x5 - 500)^2 + (y5 - 300)^2)^(1/2)) 
conj(((y3 - 8623888390675025/17592186044416)^2 + (x3 - 1591228181075565/4398046511104)^2)^(1/2)) 
conj(((y4 - 8623888390675025/17592186044416)^2 + (x4 - 1591228181075565/4398046511104)^2)^(1/2)) 
conj(((y5 - 8623888390675025/17592186044416)^2 + (x5 - 1591228181075565/4398046511104)^2)^(1/2)) 
                 conj(((x3 - x4)^2 + (y3 - y4)^2)^(1/2)) 
                 conj(((x3 - x5)^2 + (y3 - y5)^2)^(1/2)) 
                 conj(((x4 - x5)^2 + (y4 - y5)^2)^(1/2)) 
                 conj(((x6 - 500)^2 + (y6 - 300)^2)^(1/2)) 
conj(((y6 - 8623888390675025/17592186044416)^2 + (x6 - 1591228181075565/4398046511104)^2)^(1/2)) 
                 conj(((x3 - x6)^2 + (y3 - y6)^2)^(1/2)) 
                 conj(((x4 - x6)^2 + (y4 - y6)^2)^(1/2)) 
                 conj(((x5 - x6)^2 + (y5 - y6)^2)^(1/2)) 


    for j = 1:length(x) 
     A = subs(A,x(j),x0(j)) 
    end 

どうすればいいですか?

+0

?これのほとんどはコンパイルできませんMatlab ... – Wolfie

+0

はい、それは私のコードの一部です。私は最初にx0とxを定義しました。 x iを決定するには、最初にsyms x3 x4 x5 x6 y3 y4 y5 y6を使用しました。私はxではなくx0をサブクォートすることはできません –

+0

私のコードはすべて非常に多く、私はここに書くことができません –

答えて

0

おかげ別途cをしなければならない、私は私の答えを見つけました。私は以下のループを使用しており、うまくいきます。注:すべてのコードで'conj'を避けるために、'ではなく.'を使用して、行列の転置を得ました。 このリンクは非常に有用であった:すべてのコードすることはできませんsimbolic-toolbox-how-to-avoid-conj-in-matrix

for i = 1:numel(A) 
      A(i) = subs(A(i),x,x0); 
    end 
0

あなたがそのようにシンボリック行列に値を割り当てることができませんでした、あなただけの自分自身X Xの値を設定するとき

syms a b c 
x=[a b c] 
x= 
    [a, b, c] 

変更:

x=[1,2,3] 
x= 
    [1,2,3] 

テスト:

eval(a) 
ans= 
    a 

x値を変更すると、x自体の値だけが変化する(abとcではない)

あなたがBに値を割り当てて、すべての答えのための

a=1; b=2; c=3; 
eval(x) 
ans= 
    [1, 2, 3] 
+0

ありがとうございますが、このように動作します: 'syms a b c; x = [a b c]; a = 1; b = 2; c = 3; x x = [a、b、c] ' –

+0

@ mahdin75私は答えを更新しました。あなたはx –

+0

の評価を見るために関数eval()を使用する必要があります。私はあなたに言うでしょう –

関連する問題