MatLab - 将函数应用于矩阵中的每一行

时间:2013-03-08 01:28:45

标签: function matlab matrix row

我有一个包含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

非常感谢任何帮助!

1 个答案:

答案 0 :(得分: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));