-
Notifications
You must be signed in to change notification settings - Fork 1
/
vet_matrix.m
80 lines (73 loc) · 2.55 KB
/
vet_matrix.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
function [Ymatrix,ylabel,classes] = vet_matrix(yvector)
% Rotina para transformar um vetor de caracteristicas em matriz de
% caracteristicas - aplicavel em problemas qualitativos.
%
% input
% yvector : vetor y com a caracteristica a ser transformada.
% Caso: yvector seja de string, a saída ylabel será um vetor númerico.
% Caso: yvector seja uma matriz, a saída Ymatrix será um vetor e ylabel
% será um vetor de string.
% output:
% Ymatrix : matriz com classes. Cada coluna da Ymatriz refere-se
% a uma das classes.
% ylabel : vetor de classes transformado em string.
% classes : identificação das classes da entrada yvector.
%
% Exemplo:
% [Ymatrix,ylabel,classes] = vet_matrix(yvector);
%
% +++ Paulo R. Filgueiras - 19/08/2014
%
if isvector(yvector) && isnumeric(yvector)
[Ymatrix,ylabel,classes] = vet_matrix_vetor(yvector); % entrada é vetor
elseif isvector(yvector) && ~isnumeric(yvector)
[Ymatrix,ylabel,classes] = vet_matrix_string(yvector); % entrada é string
elseif ~isvector(yvector) && isnumeric(yvector)
[Ymatrix,ylabel,classes] = vet_matrix_matriz(yvector); % entrada é matriz
end
function [Ymatrix,ylabel,classes] = vet_matrix_vetor(yvector)
% subrotina para entrada yvector = vetor.
classes=unique(yvector); % classes
Ymatrix=[];
ylabel=[];
for ki=1:length(yvector)
for kj=1:length(classes)
if yvector(ki)==classes(kj)
Ymatrix=[Ymatrix;1];
else
Ymatrix=[Ymatrix;0];
end
end
ylabel=[ylabel;num2str(yvector(ki))];
end
Ymatrix=reshape(Ymatrix,length(classes),length(yvector));
Ymatrix=Ymatrix';
function [Ymatrix,ylabel,classes] = vet_matrix_string(yvector)
% subrotina para entrada yvector = string.
classes=unique(yvector,'rows'); % classes
Ymatrix=[];
ylabel=[];
for ki=1:size(yvector,1)
ylabel=[ylabel;str2num(yvector(ki))];
for kj=1:size(classes,1)
if str2num(yvector(ki))==str2num(classes(kj))
Ymatrix=[Ymatrix;1];
else
Ymatrix=[Ymatrix;0];
end
end
end
Ymatrix=reshape(Ymatrix,length(classes),length(yvector));
Ymatrix=Ymatrix';
function [Ymatrix,ylabel,classes] = vet_matrix_matriz(yvector)
% subrotina para entrada yvector = mstriz.
classes=(1:size(yvector,2))';
Ymatrix=zeros(size(yvector,1),1); % yvetor com as classes
for kj=1:length(classes)
aa1=find(yvector(:,kj)==1);
Ymatrix(aa1)=kj;
end
ylabel=[]; % ylabel
for ki=1:length(Ymatrix)
ylabel=[ylabel;num2str(Ymatrix(ki))];
end