Listing 1

function yuv=mrgb2yuv(rgb)
% mrgb2yuv   Convert from RGB colorspace to YUV colorspace.
% mrgb2yuv(rgb) will convert the triplets in 'rgb' to YUV triplets.
% 'rgb' may contain an N X 3 matrix of triplets or an M X N X 3 array
% of triplets.
% Copyright (C) 2003, Jeff Perry
% jsp Created Tue Sep 16 18:22:52 CDT 2003

if ndims(rgb)==2
   % SMTPE-240M Y'PbPr
   yuv(:,1) =  0.2122.*rgb(:,1) + 0.7013.*rgb(:,2) + 0.0865.*rgb(:,3);
   yuv(:,2) = -0.1162.*rgb(:,1) - 0.3838.*rgb(:,2) + 0.5000.*rgb(:,3);
   yuv(:,3) =  0.5000.*rgb(:,1) - 0.4451.*rgb(:,2) - 0.0549.*rgb(:,3);
elseif ndims(rgb)==3
   % SMTPE-240M Y'PbPr
   yuv(:,:,1) =  0.2122.*rgb(:,:,1) + 0.7013.*rgb(:,:,2) + 0.0865.*rgb(:,:,3);
   yuv(:,:,2) = -0.1162.*rgb(:,:,1) - 0.3838.*rgb(:,:,2) + 0.5000.*rgb(:,:,3);
   yuv(:,:,3) =  0.5000.*rgb(:,:,1) - 0.4451.*rgb(:,:,2) - 0.0549.*rgb(:,:,3);
else
    error 'The input must be either N X 3 or M X N X 3';
end