Code covered by the BSD License  

Highlights from
vecfun

Be the first to rate this file! 3 Downloads (last 30 days) File Size: 1.67 KB File ID: #35086

vecfun

by Adam Gripton

 

15 Feb 2012 (Updated 20 Feb 2012)

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

| Watch this File

File Information
Description

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

*****

Required Products MATLAB
MATLAB release MATLAB 7.13 (R2011b)
Tags for This File  
Everyone's Tags
array, data processing, function handle, multivariable, vector
Tags I've Applied
Add New Tags Please login to tag files.
Please login to add a comment or rating.
Updates
20 Feb 2012

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

Contact us