3

我有一个包含 4 个整数行的矩阵,列数未指定(取决于文本文件)。

我想对矩阵的每一行独立地应用一个函数。该函数有 4 个输入和 2 个输出。

我正在尝试使用 arrayfun 函数来执行此操作,但是每当我调用该函数时,都会收到一条错误消息:“输入参数不足。”

这是函数调用:

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

其中 b 是一个 n x 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 个。您需要更改函数定义或拆分向量元素。

第一个选项:

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

第二个选项:

[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 回答