3

列数が指定されていない(テキストファイルによって異なります)4つの整数の行を持つ行列があります。

行列の各行に個別に関数を適用したいと思います。この関数には、4つの入力と2つの出力があります。

arrayfun関数を使用してこれを実行しようとしていますが、関数を呼び出すたびに、「入力引数が不足しています」というエラーが表示されます。

関数呼び出しは次のとおりです。

[gain,phase]=arrayfun(@(x) GainPhaseComp(B(x,1:4)), 1:size(B));

ここで、bはn行4列の行列です。

関数は次のとおりです。

function [gain,phase] = GainPhaseComp(InAmp,InPhase,OutAmp,OutPhase)

gain = 20*log10(OutAmp\InAmp);

phase = (OutPhase - InPhase);

end

どんな助けでも大歓迎です!

4

1 に答える 1

0

関数GainPhaseCompには4つの入力引数がありますが、渡す行ベクトルは1つだけです。4つの要素を持つベクトルは、4つではなく、1つの変数です。関数定義を変更するか、ベクトル要素を分割する必要があります。

最初のオプション:

function [gain,phase] = GainPhaseComp(inputvector)
% function body

2番目のオプション:

[gain,phase]=arrayfun(@(x) GainPhaseComp(B(x,1),B(x,2),B(x,3),B(x,4)), 1:size(B,1));
于 2013-03-08T01:53:28.780 に答える