www.gusucode.com > matlab 案例源码 matlab代码程序 > matlab/CombineCategoricalArraysUsingMultiplicationExample.m

    %% Combine Categorical Arrays Using Multiplication
% This example shows how to use the |times| function to combine categorical
% arrays, including ordinal categorical arrays and arrays with undefined
% elements. When you call |times| on two categorical arrays, the output is
% a categorical array with new categories. The set of new categories is 
% the set of all the ordered pairs created from the categories of the input 
% arrays, or the Cartesian product. |times| forms each element of the output 
% array as the ordered pair of the corresponding elements of the input 
% arrays. The output array has the same size as the input arrays.

% Copyright 2015 The MathWorks, Inc.


%% Combine Two Categorical Arrays
% Combine two categorical arrays using |times|. The input arrays must have
% the same number of elements, but can have different numbers of categories.

A = categorical({'blue','red','green'});
B = categorical({'+','-','+'});
C = A.*B
%%

%% Cartesian Product of Categories
% Show the categories of |C|. The categories are all the ordered pairs 
% that can be created from the categories of |A| and |B|, also known as 
% the Cartesian product. 

categories(C)
%%
% As a consequence, |A.*B| does not equal |B.*A|.

D = B.*A
%%

categories(D)
%% Multiplication with Undefined Elements
% Combine two categorical arrays. If either |A| or |B| have an undefined 
% element, the corresponding element of |C| is |undefined|.

A = categorical({'blue','red','green','black'});
B = categorical({'+','-','+','-'});
A = removecats(A,{'black'});
C = A.*B
%% Cartesian Product of Ordinal Categorical Arrays
% Combine two ordinal categorical arrays. |C| is an ordinal categorical 
% array only if |A| and |B| are both ordinal. The ordering of the 
% categories of |C| follows from the orderings of the input categorical 
% arrays.

A = categorical({'blue','red','green'},{'green','red','blue'},'Ordinal',true);
B = categorical({'+','-','+'},'Ordinal',true);
C = A.*B;
categories(C)