【问题标题】:MatLab - Applying a function to each row in a matrixMatLab - 将函数应用于矩阵中的每一行
【发布时间】:2013-02-23 11:27:42
【问题描述】:

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

任何帮助将不胜感激!

【问题讨论】:

标签: function matlab matrix row


【解决方案1】:

您的函数 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));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    相关资源
    最近更新 更多