为具有可变输入数量的函数创建参数列表
Create list of arguments for function with variable number of inputs
我的问题:我编写了一个使用 varargin 语法的函数,here 对此进行了解释。现在我遇到了如何创建一个我可以传递给这个函数的参数列表的问题。该设置与此类似:
假设我有一个函数
matrixmult(A, varargin)
它确定任意多个矩阵与矩阵A的乘积。现在我想确定A与n个矩阵的乘积,其中n先前在代码中设置。它看起来像这样:
n=4;
A=eye(5);
B=ones(5);
matrixmult(A, ?)
我必须写什么来代替?为了获得与此相同的结果:
n=4;
A=eye(5);
B=ones(5);
matrixmult(A,B,B,B,B)
Google 没有帮助,因为变量输入总是导致有关如何使用 varargin 的问题,而不是如何传递在某种循环中创建的参数的问题。
我尝试了各种方法,例如创建字符串 ',B' 并重复多次以使用 eval(string)。
如果这应该是重复的,请务必标记它。
提前感谢您的帮助。
您可以将所有输入放入一个元胞数组中,然后使用 {:}
语法将 create a comma-separated list 作为多个输入传递给您的函数。
所以在你的情况下,是这样的:
% Create n copies of B each within it's own cell array element
inputs = repmat({B}, [1 n]);
% Pass all of these B matrices to your function
matrixmult(A, inputs{:});
我的问题:我编写了一个使用 varargin 语法的函数,here 对此进行了解释。现在我遇到了如何创建一个我可以传递给这个函数的参数列表的问题。该设置与此类似: 假设我有一个函数
matrixmult(A, varargin)
它确定任意多个矩阵与矩阵A的乘积。现在我想确定A与n个矩阵的乘积,其中n先前在代码中设置。它看起来像这样:
n=4;
A=eye(5);
B=ones(5);
matrixmult(A, ?)
我必须写什么来代替?为了获得与此相同的结果:
n=4;
A=eye(5);
B=ones(5);
matrixmult(A,B,B,B,B)
Google 没有帮助,因为变量输入总是导致有关如何使用 varargin 的问题,而不是如何传递在某种循环中创建的参数的问题。 我尝试了各种方法,例如创建字符串 ',B' 并重复多次以使用 eval(string)。 如果这应该是重复的,请务必标记它。 提前感谢您的帮助。
您可以将所有输入放入一个元胞数组中,然后使用 {:}
语法将 create a comma-separated list 作为多个输入传递给您的函数。
所以在你的情况下,是这样的:
% Create n copies of B each within it's own cell array element
inputs = repmat({B}, [1 n]);
% Pass all of these B matrices to your function
matrixmult(A, inputs{:});