2012-02-29 21 views
0

私はC言語に変換する必要があるMATLABコードを持っています。 MATLABコード、私の計算にacccordingここMATLABで行列の指数関数をとることは可能ですか?

n1 = 11; x1 = randn(2,n1) + repmat([-1 1]’,1,n1); 
w = [0 0]’; 

によると、

w’*x1 

の出力は、私の知る限り、行ベクトルである1×3の行列になります。

次に何が次のコードの出力となり、repmat()も1xn1マトリックスを作成し

z = exp(repmat(b,1,n1)+w’*x1); 

(私はこれについてはよく分からないが、マニュアルからそれを考え出しました)。私の理解は、2つの1x3行列を追加するとスカラーが得られないということです。

ここで指数関数はどのように取られますか?行列に指数関数を適用できますか?

+1

eを*正方行列の冪乗にすることができます。しかし、それは数学で、私はMatlabについて知らない。 – Beta

+0

あなたは repmat(b、1、n1)+ w '* x1 という結果を投稿できますか?オクターブでは機能しません。最初のタームは4x11で、2番目の1x11 –

+0

Thnxです。では、eの値は行列にどのように引き上げられますか?別の行列または単一のスカラー値? – clu3Less

答えて

4

多くのMATLAB関数と同様に、exp関数は配列に適用すると要素ごとに動作します。詳細は、the documentationを参照してください。

+0

ありがとうございます。それは多くの助けになり、今やより意味があります。 – clu3Less

+0

私のコードによれば、zは指数的な値の配列になります。 – clu3Less

+1

はい。 Cに変換するとき、入力行列の各要素に対してexp()を呼び出すループに変換する必要があります。 –

0

はい、行列に指数を適用できます。ウィキペディアの記事:Matrix exponential

Xをn×nの実数行列または複素数行列とします。 E XまたはEXP(X)で表されるXの指数は、@ジョンバーソロミューはしかし指摘したよう

e^X = Sum(k=0, infinity) 1/k! * X^k 

級数によって与えられるN×n行列であり、これは何exp()ありませんMatlabはそうです。

+0

これは当てはまりますが、これはMATLABの 'exp'関数が行うものではありません(MATLABは関数を計算する関数を持っています行列は指数関数的ですが、それは 'expm'と呼ばれています。恐らくスカラー型' exp'よりもあまり一般的でないからです) –

+0

@JohnBartholomew:はい、あなたは正しいです。 –

関連する問題