1+ function  labels  =  generateLabels(num_samples , varargin )
2+  %  generateLabels Generates a vector of labels for dataset samples.
3+  % 
4+  %  This function creates a vector of integer labels for a dataset based on
5+  %  the specified number of samples, classes, and sets. Labels are assigned
6+  %  in a repeating sequential manner across the classes for each set.
7+  % 
8+  %  Parameters:
9+  %  num_samples (integer): The number of samples in each class.
10+  %  varargin: Optional input arguments to specify number of classes and sets.
11+  %  - If one additional argument is provided, it specifies the number of classes.
12+  %  - If two additional arguments are provided, the first specifies the number
13+  %  of classes, and the second specifies the number of sets.
14+  % 
15+  %  Returns:
16+  %  labels (1 x N integer array): The generated vector of labels, where N is the
17+  %  total number of samples across all classes and sets.
18+  % 
19+  %  Usage:
20+  %  labels = generateLabels(100);
21+  %  % Generates 100 labels, all assigned to a single class and set.
22+  % 
23+  %  labels = generateLabels(100, 5);
24+  %  % Generates 500 labels for 5 classes, each class having 100 samples,
25+  %  % all within a single set.
26+  % 
27+  %  labels = generateLabels(100, 5, 3);
28+  %  % Generates 1500 labels for 5 classes and 3 sets, each class having
29+  %  % 100 samples in each set.
30+  % 
31+  %  Errors:
32+  %  - An error is thrown if the number of input arguments is less than 1 or more than 3.
33+  % 
34+  %  Example:
35+  %  labels = generateLabels(10, 3, 2)
36+  %  % Returns: [1 2 3 1 2 3 1 2 3 1 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3]
37+  
38+  %  Validate the number of input arguments
39+  if  nargin  <  1 
40+  error(' Not enough input arguments.' 
41+  elseif  nargin  ==  1 
42+  num_classes =  1 ; %  Set default number of classes to 1
43+  num_sets =  1 ; %  Set default number of sets to 1
44+  elseif  nargin  ==  2 
45+  num_classes =  varargin{1 }; %  Get number of classes from input
46+  num_sets =  1 ; %  Set default number of sets to 1
47+  elseif  nargin  ==  3 
48+  num_classes =  varargin{1 }; %  Get number of classes from input
49+  num_sets =  varargin{2 }; %  Get number of sets from input
50+  else 
51+  error(' Too many input arguments.' 
52+  end 
53+  
54+  %  Create a matrix of class labels, repeating each class label 'num_samples' times
55+  %  and then repeating the whole sequence for each set.
56+  A =  repmat(1 : num_classes , [num_samples , num_sets ]);
57+  
58+  %  Convert the matrix of class labels into a single row vector
59+  labels =  A(: )' ;
60+  end 
61+  
0 commit comments