vecfun

Applies a function to each entry of an N-dimensional array comprised of vectors.

You are now following this Submission

M = vecfun (f, A, dim)

vecfun applies a function f with column vector input to an N-dimensional array:

A: size [d1,d2, ... ,dD]

where one of the dimensions of A is comprised of possible vector inputs into f, and f returns an array of P elements.

Therefore, the output of vecfun applied to f on A along dimension dim will be of the same number of dimensions as A and have:

M: size [d1,d2, ... , P , ... , dD]

where d[dim] = P.

Example:

A = randn(2,3,5,7);
f = @(p) [p(1)+p(2);p(2)+p(3); ...
p(3)+p(4);p(4)+p(5)];
% f takes a five element column vector p
% and returns a four element output
M = vecfun(f,A,3);
size(M)

% returns [2,3,4,7]
% f:R5 -> R4 has acted along the third
% dimension of A as required.

*****
See also my function `chooseargs' (ID 35115) which works well in conjunction with vecfun.
*****

Example of combined usage:

A=randn(20,5);
Ai=zeros(20,1);
for k=1:20
[~,Aik]=min(A(k,:));
Ai(k)=Aik;
end

can be replaced with:

Ai=vecfun(@(s) chooseargs(@min,2,[],s),A,2);

*****

Cite As

Adam Gripton (2026). vecfun (https://www.mathworks.com/matlabcentral/fileexchange/35086-vecfun), MATLAB Central File Exchange. Retrieved .

General Information

MATLAB Release Compatibility

  • Compatible with any release

Platform Compatibility

  • Windows
  • macOS
  • Linux
Version Published Release Notes Action
1.1.0.0

Added extra information about combined usage with the `chooseargs' function.

1.0.0.0