Multiple Inputs and Outputs in Builder NE Type Safe APIs
03 May 2011
Example code for the "Art of MATLAB" blog post of the same name.
|polygonal(tN, pN, hN)
function [t, p, h] = polygonal(tN, pN, hN)
% POLYGONAL Compute three sequences of polygonal numbers
% [t, p, h] = polygonal(tN, pN, hN)
% Independently compute the entries in the triangular, pentagonal and
% hexagonal number sequences. Each input specifies the entry or entries
% to compute for a particular series:
% tN: Triangular numbers (returned in t)
% pN: Pentagonal numbers (returned in p)
% hN: Hexagonal numbers (return in h)
% Inputs may be scalars or vectors. Any input vector of length K returns
% in output of the K entries in the corresponding sequence.
% [t, p, h] = polygonal(17, [3 6 9], 45)
% * The 17th triangular number in t
% * The 3rd, 6th and 9th pentagonal numbers in p
% * The 45th hexagonal number in h
% tN is required. pN and hN are optional.
% Polyongal numbers are a type of figurate number. See Wikipedia
% for a detailed definition: http://en.wikipedia.org/wiki/Figurate_number
% Example code developed to demonstrate how to manage multiple inputs and
% outputs in C# with Builder NE type safe APIs. See the "Art of MATLAB"
% blog article: "Mulitple Inputs and Outputs in Builder NE Type Safe APIs"
% at http://blogs.mathworks.com/loren/category/deployment/.
% One input: compute only triangular numbers
if nargin > 0
t = triangular(tN);
% Two inputs: also compute pentagonal numbers
if nargin > 1
p = pentagonal(pN);
% Three inputs: also compute hexagonal numbers
if nargin > 2
h = hexagonal(hN);
function t = triangular(n)
% TRIANGULAR Compute the Nth triangular number.
% If N is a vector of length K, compute K triangular numbers.
t = ( n.^2 + n ) / 2;
function p = pentagonal(n)
% PENTAGONAL Compute the Nth pentagonal number.
% If N is a vector of length K, compute K pentagonal numbers.
p = ( 3 * n.^2 - n ) / 2;
function h = hexagonal(n)
% HEXAGONAL Compute the Nth hexagonal number.
% If N is a vector of length K, compute K hexagonal numbers.
h = (2 * n .* ( 2*n - 1 ) ) / 2;