2013-03-08 356 views
3

我有一个矩阵,行数为4个整数,列数未指定(取决于文本文件)。MatLab - 对矩阵中的每一行应用一个函数

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

我想使用arrayfun函数来做到这一点,但每当我调用函数,我得到一个错误:“没有足够的输入参数。”

下面是函数调用:

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

其中b是由4矩阵的n。

下面是函数:

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

gain = 20*log10(OutAmp\InAmp); 

phase = (OutPhase - InPhase); 

end 

任何帮助将不胜感激!

+0

可能重复http://stackoverflow.com/questions/2307249/how-to-apply-a-function-to-every -row-in-matlab – gevang 2013-03-08 02:29:15

回答

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)); 
+0

非常感谢你! – user2049133 2013-03-08 02:02:48

相关问题