1 | function [comp]=composite(data,ind,jav,jap,dim_comp) |
---|
2 | |
---|
3 | %COMPOSITE Calcul de composites |
---|
4 | |
---|
5 | %+ |
---|
6 | % |
---|
7 | % .. _composite.m: |
---|
8 | % |
---|
9 | % =========== |
---|
10 | % composite.m |
---|
11 | % =========== |
---|
12 | % |
---|
13 | % DESCRIPTION |
---|
14 | % =========== |
---|
15 | % |
---|
16 | % Calcul de composites |
---|
17 | % |
---|
18 | % Entrees : |
---|
19 | % |
---|
20 | % data |
---|
21 | % donnees, vecteur ou matrice de n dimensions |
---|
22 | % ind |
---|
23 | % indice des valeurs de data servant de bases au composite, vecteur |
---|
24 | % jav |
---|
25 | % nombre de points avant chaque indice |
---|
26 | % jap |
---|
27 | % nombre de points apres chaque indice |
---|
28 | % dim_comp |
---|
29 | % dimension sur laquelle le composite est calcule |
---|
30 | % |
---|
31 | % Sortie : |
---|
32 | % |
---|
33 | % comp |
---|
34 | % composite |
---|
35 | % |
---|
36 | % EXAMPLES |
---|
37 | % ======== |
---|
38 | % |
---|
39 | % :: |
---|
40 | % |
---|
41 | % >> x=[0:0.5:100]; |
---|
42 | % >> f=sin(x); |
---|
43 | % >> ind=find(f>0.96 & f<=1); |
---|
44 | % >> jav=3; |
---|
45 | % >> jap=8; |
---|
46 | % >> dim_comp=1; |
---|
47 | % >> % Calcul le composite en prenant |
---|
48 | % >> % 3 points avant et 8 points apres chaque indice choisi |
---|
49 | % >> comp_f=composite(f,ind,jav,jap,dim_comp); |
---|
50 | % >> figure;plot(comp_f); |
---|
51 | % |
---|
52 | % TODO |
---|
53 | % ==== |
---|
54 | % |
---|
55 | % EVOLUTIONS |
---|
56 | % ========== |
---|
57 | % |
---|
58 | % $Id$ |
---|
59 | % |
---|
60 | % $URL$ |
---|
61 | % |
---|
62 | %- |
---|
63 | |
---|
64 | dim=ndims(data); |
---|
65 | %% Quand data a 2 dimensions |
---|
66 | % teste si ces 2 dimensions ne cachent pas un vecteur (si oui, fait dim=1) |
---|
67 | if dim==2 |
---|
68 | if size(data,1)==1 |
---|
69 | data=data'; |
---|
70 | dim=1; |
---|
71 | end |
---|
72 | if size(data,2)==1 |
---|
73 | dim=1; |
---|
74 | end |
---|
75 | end |
---|
76 | |
---|
77 | %% Teste si ind ne contient pas de valeurs inferieures ou egales a jav |
---|
78 | % ou superieures a size(data,dim_comp)-jap |
---|
79 | % sinon pb pour extraire les series voulues par la suite |
---|
80 | if ~isempty(find(ind<jav)) |
---|
81 | disp('Erreur dans ind par rapport a jav'); |
---|
82 | return |
---|
83 | end |
---|
84 | if ~isempty(find(ind>size(data,dim_comp)-jap)) |
---|
85 | disp('Erreur dans ind par rapport a jap'); |
---|
86 | return |
---|
87 | end |
---|
88 | |
---|
89 | %% Adapte selon la taille de data |
---|
90 | % pour pouvoir ensuite extraire les series voulues |
---|
91 | x(1:2:dim*2)=','; |
---|
92 | x(2:2:dim*2)=':'; |
---|
93 | |
---|
94 | if dim_comp==1 |
---|
95 | dav=''; |
---|
96 | else |
---|
97 | dav(1:2:dim_comp*2-2)=':'; |
---|
98 | dav(2:2:dim_comp*2-2)=','; |
---|
99 | end |
---|
100 | |
---|
101 | if dim_comp==dim |
---|
102 | dap=''; |
---|
103 | else |
---|
104 | dap(1:2:(dim-dim_comp)*2)=','; |
---|
105 | dap(2:2:(dim-dim_comp)*2)=':'; |
---|
106 | end |
---|
107 | |
---|
108 | %% Extraction |
---|
109 | size_ext=[length(ind) size(data)]; |
---|
110 | size_ext(dim_comp+1)=jav+1+jap; |
---|
111 | % allocation |
---|
112 | ext=zeros(size_ext); |
---|
113 | for n=1:length(ind) |
---|
114 | eval(['ext(n' x ')=data(' dav 'ind(n)-jav:ind(n)+jap' dap ');']); |
---|
115 | end |
---|
116 | |
---|
117 | %% Calcul du composite |
---|
118 | comp=squeeze(nanmean(ext,1)); |
---|
119 | |
---|
120 | |
---|
121 | |
---|