1

私はmatlabの宿題をしていて、次の問題を解決しました。そして採点者はそれが正解だと言います。私はプログラムで使用しましたが、まだコースを受講していません。誰かが for または if なしでプログラムを提案できますか?

入力引数として ab という行列を受け取る pitty という関数を作成します。行列 ab にはちょうど 2 つの列があります。この関数は、ab の各行の 2 つの要素が a と b の 1 つのペアに対応すると仮定して、ab の対応する行について、それぞれがピタゴラスの定理 a2 + b2 = c2 を満たす正の値を含む列ベクトル c を返す必要があります。 、それぞれ、定理で。組み込みの MATLAB 関数 sqrt が平方根を計算し、それを使用できることに注意してください。

私のコード

function c = pitty(ab)
    [n , m] = size(ab)
    for i = 1:n
        c(i) = sqrt(ab(i,1)^2 + ab(i,2)^2)    
    end
    c = c'
end   
4

3 に答える 3

4

.^2演算子を使用して、行列の各要素を二乗できます。次に、各行に沿って合計しsum(...,2)、最後にルートを取ります。

ab = [1,2;3,4;5,6]

c = sqrt(sum(ab.^2,2));

forその必要はありません。

于 2015-05-07T07:15:15.470 に答える