我有一个包含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
非常感谢任何帮助!
答案 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));