CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : Bases MatLab débutant

DébutPage précedente
1
Page suivantePage suivante
Chachou156 Chachou156
MP
Niveau 1
08 janvier 2024 à 12:07:10

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
DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : Evilash08, Vortex646, Tomy-Fett, Leirok, ]Faustine[, Latios[JV], Remysangfamy
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment