Bonjour, j'ai fais un tuto pour aider sur MatLab, vous pensez qu'il y a toutes les bases ?
% Importation
import=dir("*Sujet*.xlsx");
for i=1:2
Data(i).sinus=readmatrix(import(i).name);
end
% Vecteur temps
for i=1:2
Temps=(1/1000:1/1000:length(Data(i).sinus)/1000);
Data(i).sinus(:,2)=Temps';
end
% Filtrer avec passe bas 10Hz
[a,b]=butter(2,[10]/500,'low');
for i=1:2
Data(i).filt=filtfilt(a,b,Data(i).sinus(:,1));
Data(i).filt(:,2)=Temps'
end
% Déterminer le nombre de sinusoides
for i=1:2
[x(i).p(:,1),x(i).p(:,2)]=findpeaks(Data(i).filt(:,1));
NbrSinus(:,i)=length(x(i).p(:,1));
end
plot(Data(i).filt(:,1))
hold on
plot(Data(i).sinus(:,1))
plot(x(i).p(:,2),x(i).p(:,1),'rx',"MarkerSize",10)
hold off
plot(Data(i).sinus(:,1))
hold on
plot(x(i).p(:,2),x(i).p(:,1),'rx',"MarkerSize",10)
hold off
%En cherchatn pic negatif
[a,b]=butter(2,[5]/500,'low');
for i=1:2
Data(i).filter=filtfilt(a,b,Data(i).sinus(:,1));
Data(i).filter(:,2)=Temps'
end
for i=1:2
[x(i).p(:,1),x(i).p(:,2)]=findpeaks((-Data(i).filter(:,1)));
NbrSinus(:,i)=length(x(i).p(:,1));
end
plot(Data(1).filter(:,1))
hold on
plot(Data(1).sinus(:,1))
plot(x(1).p(:,2),(-x(1).p(:,1)),'rx',"MarkerSize",10)
% Max par cycle
for i=1:2
for j=1:length(x(i).p)
if j==1
x(i).MaxCycle(j,:)=max(Data(i).sinus(1:x(i).p(j,2),:));
else x(i).MaxCycle(j,:)=max(Data(i).sinus(x(i).p(j-1,2):x(i).p(j,2),:));
end
end
end
% import
Data=readmatrix("Signal sinusoidal_Sujet1.xlsx");
% vecteur teps
Temps=(0:1/1000:(length(Data)-1)/1000);
Temps=Temps'
% Filtre
[a,b]=butter(2,[5]/500,"low");
DataFilt=filtfilt(a,b,Data);
% Pic négatif
[x,y]=findpeaks((-DataFilt));
% découpage cycle
plot(Data)
hold on
plot(y,x,'rx',"MarkerSize",10)
hold off
% Pic max et amplitude de chaque cycle
for i=1:length(y)
if i==1
[MaxCycle(i,1),MaxCycle(i,2)]=max(Data(1:y(i,1),1));
[MinCycle(i,1),MinCycle(i,2)]=min(Data(1:y(i,1),1));
Amp(i,1)=peak2peak(Data(1:y(i,1),1));
else [MaxCycle(i,1),MaxCycle(i,2)]=max(Data(y(i-1,1):y(i,1),1));
MaxCycle(i,2)=MaxCycle(i,2)+y(i-1,1)-1;
[MinCycle(i,1),MinCycle(i,2)]=min(Data(y(i-1,1):y(i,1),1));
MinCycle(i,2)=MinCycle(i,2)+y(i-1,1)-1;
Amp(i,1)=peak2peak(Data(y(i-1,1):y(i,1),1));
end
end
% Illustrer pic max et min
plot(Data)
hold on
plot(MinCycle(:,2),MinCycle(:,1),"og","MarkerSize",10)
plot(MaxCycle(:,2),MaxCycle(:,1),"ok","MarkerSize",10)
hold off
DATA=readmatrix("Test_saut_TP2.csv","NumHeaderLines",5);
PFF=DATA(:,3:20);
F(1).x=PFF(:,1);
F(1).y=PFF(:,2);
F(1).z=PFF(:,3);
F(2).x=PFF(:,10);
F(2).y=PFF(:,11);
F(2).z=PFF(:,12);
Temps=(resample((0:(length(F(1).x)-1)),6980,6980))/1000;
Temps=Temps';
Temps_M=Temps(1:20:end);
FX1_M=F(1).x(1:20:end);
Res20(:,1)=resample(Temps,6980/20,6980);
Res20(:,2)=resample(F(1).x(:,1),length(Res20(:,1)),6980);
figure;
plot(Res20(:,1),Res20(:,2),'--r');hold on
plot(Temps,F(1).x,'b')
hold off
Poids=(abs(mean(F(1).z(1:100,1)))+abs(mean(F(2).z(1:100,1))))/10;
Masse=Poids*10
for i=1:2
[Tdec(:,i),b]=find(F(i).z>(-30),1);
[Tatt(:,i),b]=find(F(i).z(Tdec(:,i):end,:)<(-30),1);
Tatt(:,i)=Tatt(:,i)+Tdec(:,i);
end
x=Temps
figure;
plot(x,F(1).z,x(Tdec(1:1),1),F(1).z(Tdec(1:1),1),'xg',x(Tatt(1,1),1),F(1).z(Tatt(1,1),1),'xr');
for j=1:2
ACGz(:,j)=(F(j).z(4666:5100,1)-Masse);
VCGz(:,j)=cumtrapz(ACGz(:,j));
OCGz(:,j)=(1/8)*9.81*(((Tatt(:,j)-Tdec(:,j))/1000)^2);
P(:,j)=PuissanceBis(F(j).z(4666:5100,1),VCGz(:,j));
end
T=(4666:5100)';
plot (T,F(1).z(4666:5100,1),'b',T,ACGz(:,1),'r');
filename="TD_de_Saut.xlsx"
MVCGz=min(VCGz);
writematrix(Tdec',filename,'Sheet',1,'Range','A1:A2');
writematrix(Tatt',filename,'Sheet',1,'Range','B1:B2');
writematrix(OCGz',filename,'Sheet',1,'Range','C1:C2');
writematrix(MVCGz,filename,'Sheet',1,'Range','D1:D2');
writematrix(P,filename,'Sheet',1,'Range','E1:F435');
values={'Tdec',Tdec,'Tatt',Tatt,'OCGz',OCGz,'MVCGz',MVCGz,'Puissance',P};
writecell(values,'Sautsaut.xlsx')
%% Ginput phase d'envol
plot(F(1).z)
PhaseEnvol=ginput(2);
TempsEnvol=(PhaseEnvol(2,1)-PhaseEnvol(1,1))/1000
COP=DATA(:,9:10);
Deplacement=[0 0];
for i=1:length(COP)
if i==length(COP)
i=i-1;
end
Deplacement(1,1)=Deplacement(1,1) + abs(COP(i+1,1)-COP(i,1));
Deplacement(1,2)=Deplacement(1,2) + abs(COP(i+1,2)-COP(i,2));
end
% Importation
import=dir("*Sujet*.xlsx");
for i=1:2
Data(i).sinus=readmatrix(import(i).name);
end
% Vecteur temps
for i=1:2
Temps=(1/1000:1/1000:length(Data(i).sinus)/1000);
Data(i).sinus(:,2)=Temps';
end
% Filtrer avec passe bas 10Hz
[a,b]=butter(2,[10]/500,'low');
for i=1:2
Data(i).filt=filtfilt(a,b,Data(i).sinus(:,1));
Data(i).filt(:,2)=Temps'
end
% Déterminer le nombre de sinusoides
for i=1:2
[x(i).p(:,1),x(i).p(:,2)]=findpeaks(Data(i).filt(:,1));
NbrSinus(:,i)=length(x(i).p(:,1));
end
plot(Data(i).filt(:,1))
hold on
plot(Data(i).sinus(:,1))
plot(x(i).p(:,2),x(i).p(:,1),'rx',"MarkerSize",10)
hold off
plot(Data(i).sinus(:,1))
hold on
plot(x(i).p(:,2),x(i).p(:,1),'rx',"MarkerSize",10)
hold off
%En cherchatn pic negatif
[a,b]=butter(2,[5]/500,'low');
for i=1:2
Data(i).filter=filtfilt(a,b,Data(i).sinus(:,1));
Data(i).filter(:,2)=Temps'
end
for i=1:2
[x(i).p(:,1),x(i).p(:,2)]=findpeaks((-Data(i).filter(:,1)));
NbrSinus(:,i)=length(x(i).p(:,1));
end
plot(Data(1).filter(:,1))
hold on
plot(Data(1).sinus(:,1))
plot(x(1).p(:,2),(-x(1).p(:,1)),'rx',"MarkerSize",10)
% Max par cycle
for i=1:2
for j=1:length(x(i).p)
if j==1
x(i).MaxCycle(j,:)=max(Data(i).sinus(1:x(i).p(j,2),:));
else x(i).MaxCycle(j,:)=max(Data(i).sinus(x(i).p(j-1,2):x(i).p(j,2),:));
end
end
end
Message édité le 08 janvier 2024 à 12:08:05 par Chachou156