Se connecter

Black Belt

Sujet : Script TP Matlab
1
Kriegor
Niveau 11
09 décembre 2008 à 17:51:08

Prière de laisser ce message jusqu'à demain 12H, c'est pour un exam :cool:

TP3

load speech.mat

whos

plot(speech)

xlabel('time(seconds)')

taille_bloc=512;

jolitaille=size(speech)-rem(size(speech),taille_bl
oc);

new_speech=speech(1:jolitaille);

figure

plot(new_speech)

nbre_bloc=jolitaille(1)/512;

twodinew_speech=reshape(new_speech,taille_bloc,nbr
e_bloc);

dt=1/22050;

energy=sum(twodinew_speech.*twodinew_speech*dt);

puissance=(1/sum(nbre_bloc))*sum(twodinew_speech.*
twodinew_speech);

RMS=mean(twodinew_speech);

whos

figure(2)

x=1:taille_bloc:jolitaille(1);

plot(x,energy,'r+')

hold on

plot(new_speech)

eseuil=0.0002;

energy_out=(energy>eseuil);

figure

plot(x,energy_out,'r')

hold on

plot(new_speech)

Kriegor
Niveau 11
09 décembre 2008 à 17:52:28

TP4

Fonction APC
function [A,phi]=APC(s,t,fo)

r=exp(2*pi*j*fo.*t);

dur=max(t)-min(t)

Te=(dur)./(size(t,2)-1)

PS=sum(s.*conj(r).*Te);

A=(2/dur).*abs(PS);

phi=angle(PS);

Fonction APFC
function [A,phi,fo]=APFC(s,t)

N=size(t,2);

dur=max(t)-min(t);

Te=(dur)./(N-1);

for k=1 : floor(N/2);

fk=k/dur;

r=exp(2*pi*j*fk*t);

PS(k)=(1/N)*sum(s.*conj(r));

end

[PS_max,kmax]=max(PS);

A=2*abs(PS_max)

phi=angle(PS_max)

fo=kmax/dur

Kriegor
Niveau 11
09 décembre 2008 à 17:54:51

TP4

type de script

%exercice IV-2

%a)

t=0:0.02:0.998;

A=1.3;

fo=5;

phi=2.8;

s=A*cos(2*pi*fo.*t+phi);

%On a défini le vecteur signal, le vecteur support temporel et

%la fréquence fo pour les introduire dans notre fonction APC.

[Aest,phiest]=APC(s,t,fo)

plot(t,s)

hold on

sest=Aest*cos(2*pi*fo.*t+phiest);

plot(t,sest,'rx--')

%tracé de s en fonction de t superposé à notre fonction sinusoïdale

%reconstituée

%erreur relative :

%sur l'amplitude

errampli=abs((A-Aest4)/A)*100

%vitesse de l'objet

v=1450

fe=1000

fr=fest6

vO=v*(1-(fe/fr))

Kriegor
Niveau 11
09 décembre 2008 à 17:56:03

TP5

function [y]=sciencef(t,k,To)

fo=1/To;

phi=0;

x=cos(2*pi*fo*t-phi)+2*sin(2*pi*fo*t-phi).*sin(2*p
i*fo*t-phi);

y=x.*exp(-j*2*pi*(k/To)*t);

script

To=1/fo;

k=-2:2;

Xk=(1/To)*quad8('sciencef',-To/2,To/2,[],[],k(5),T
o)

Kriegor
Niveau 11
09 décembre 2008 à 17:57:03

TP7

f1=1;

N=64; %On prend N égale à une puissance de 2 ce qui donne de meilleurs résultats

T1=1/f1;

To=1*T1;

m=To/T1;

fech=N/To;

tech=1/fech;

t=0:tech:(N-1)*tech;

s1=cos(2*pi*f1*t);

subplot(3,2,1)

plot(t,s1,'black')

TFS1=fft(s1)/N; %vecteur de N valeur indicé de 1 à N

% Les coefficients positifs se trouvent avant N/2 et les négatifs après

B=FFTshift(TFS1); % Pour réorganiser ce vecteur, on utilise la fonction FFTshift

% qui va "déplier" la deuxième partie du vecteur pour la mettre avant la première.

% Mais FFTshift renvoit encore un vecteur dont les valeurs des indices vont toujours de 1 à N.

support=-N/2:1:(N/2-1); % Pour tracer finalement nos coefficients, il faut se servir d'un support k

% variant de -N/2 à N/2-1 par pas de 1

% Puis on trace les différents graphes :

subplot(3,2,3)

plot(support,real(B))

subplot(3,2,4)

plot(support,imag(B),'rx--')

subplot(3,2,5)

plot(support,abs(B),'g')

subplot(3,2,6)

plot(support,angle(B),'y')

Kriegor
Niveau 11
09 décembre 2008 à 17:59:27

TP8

function [r]=core(x,y)

buf=y>99999999999999999999999;

%autre possibilité : buf=zeros(1,length(y))

x2=[x,buf];

buf_index=2:length(y);

for i=1:length(x2)

buf=[buf(buf_index),x2(i)];

r(i)=sum(buf.*y);

end

script

n=60;

b=15;

a=10;

y1=zeros(1,n);

for i=1:n;

if ((i>(b-a/2))&&(i<(b+a/2)));

y1(i)=1;

end

end
nrj1=sum(y1.*y1)

subplot(3,2,2)

stem(core(y1,y1))

max1=max(core(y1,y1))

%On remarque que les maximums de l'autocorrélation correspondent aux valeurs

%calculées des énergies

avec signal quelconque :
eseuil=nrj/2;

signal2=(core(radar_pulse,radar_received)>eseuil);

figure(6)

plot(signal2,'r')

hold on

plot(core(radar_pulse,radar_received))

val=sum(core(radar_pulse,radar_noise)>eseuil)
etc...

Kriegor
Niveau 11
09 décembre 2008 à 18:02:18

Voilà merci. Désolé de polluer ce forum, même s'il n'est plus trop fréquenté. Je ne savais pas trop quoi choisir d'autre et je sais que je ne l'oublierai pas demain matin quand je me connecterai pour récupérer ces informations au combien précieuse durant mon exam. Enfin bref, vous me comprenez! ^^
J'aime assez à l'idée que ce jeu va m'aider à récupérer une bonne note!! ^^

Kriegor
Niveau 11
09 décembre 2008 à 18:10:30

Un petit dernier pour la route :

TP2
boucle for :

i=1
for DT=0.25:0.25:10
intervalle(i)=DT
energy(i)=quad8('carre',-DT/2,DT/2,[],[],a)
i=i+1
end
plot(intervalle,energy)
energynum=(sum(carre(t,a).*0,1)

histo:
hist(clari,50)
[N,X]=hist(clari.*clari,50)
Puissance=1/sum(N).*sum(X.*N)

Voilà merci encore.

Kriegor
Niveau 11
10 décembre 2008 à 11:21:33

C'est bon, un 20 en perspective.
Encore désolé et merci. Vous pouvez tout raser.

arnaud13330
Niveau 1
15 décembre 2010 à 22:01:14

function [A,phi]=apc(fo,s,t)
r=exp(j*2*pi*fo*t);
Te=(max(t)-min(t))/(length(t)-1);
comp=sum(s.*conj(r)*Te);
mod=abs(comp);
A=2/(max(t)-min(t))*mod;
phi=angle(comp);
end

function [Aest,Phiest,fest]=apfc(s,t)
L=length(t); % L= Longeur de t
D=(t(1,L)-t(1,1));
N=L-1;
Te=D/N;
k=1;
for k=1:N/2
fk=k/D;
r=exp(2*pi*j*fk*t);
SR(k)=(1/N)*sum(s.*conj(r));
k=k+1;
end
[SRkmax,kmax]=max(SR);
Aest=2*abs(SRkmax);
Phiest=angle(SRkmax);
fest=kmax/(N*Te);
subplot(2,1,2)
k=1:N/2;
fk=k/D;
stem(fk,SR(k))
xlabel('fk')
ylabel('SR(k)')
title('SR(k) en fonction de fk','color','red')
end

arnaud13330
Niveau 1
15 décembre 2010 à 22:06:04

function [fr,vo]=frvoc(fe,v,s_sonar,t_sonar);
L=length(t); % L= Longeur de t
D=(t(1,L)-t(1,1));
N=L-1;
Te=D/N;
k=1;
for k=1:N/2
fk=k/D;
r=exp(2*pi*j*fk*t);
SR(k)=(1/N)*sum(s.*conj(r));
k=k+1;
end
[SRkmax,kmax]=max(SR);
fr=kmax/(N*Te)
vo=v*(1-(fe/fr))

load(lab_data)
fe=1000;
v=1450;
s_sonar;
t_sonar;
plot(t_sonar, s_sonar)
[fr,vo]=frvoc(fe,v,s_sonar,t_sonar);

arnaud13330
Niveau 1
15 décembre 2010 à 22:10:58

N=512;
speech(length(speech):N*143)=0;
LG=size(speech);
X=reshape(speech,N,143);
E=(sum(X.^2)./N);
Z(find(E>0.0002))=1;
Z(find(E<0.0002))=0;
Subplot(2,1,2);
support=(1:512:LG);
plot(speech);
hold on;
stairs(support,Z,'r');

arnaud13330
Niveau 1
15 décembre 2010 à 22:12:08

%**********V-1)***********

N= 2^7;
f1=3;
T1=1;
T0=0;
ts=(T1-T0)/(N-1);
t=T0:ts:T1;
s1=1+2*sin(2*pi*f1*t);
subplot(5,1,1);
plot(t,s1);
title('signal d"origine');

S1=fft(s1)/N;
S1=fftshift(S1);
df=1/(T1-T0); % <-> fo=1/T0 intervalle en fréquence
k=-N/2:((N/2)-1);
fmax=(N/2)*df;
f=k*df;
subplot(5,1,2);
stem(f,real(S1));
title('réel');
subplot(5,1,3);
stem(f,imag(S1));
title('imaginaire');
subplot(5,1,4);
stem(f,abs(S1));
title('Module');
subplot(5,1,5);
stem(f,angle(S1).*(abs(S1)>1E-01));
title('Phase');

arnaud13330
Niveau 1
15 décembre 2010 à 22:24:05

6.1
close all;
clear all;
%a)
y1=[zeros(1,10) ones(1,10) zeros(1,40)];
subplot(3,1,1);
stem(y1);
E1=sum(y1.^2)
subplot(3,1,2);
n2=1:1:10;
y2=[2*n2 zeros(1,50)];
stem(y2);
E2=sum(y2.^2)
subplot(3,1,3);
y3=[zeros(1,49) ones(1,1) zeros(1,10)];
stem(y3);
E3=sum(y3.^2)

%b)
figure;
subplot(3,1,1);
correl1=corr(y1,y1);
plot(correl1);
subplot(3,1,2);
correl2=corr(y2,y2);
plot(correl2);
subplot(3,1,3);
correl3=corr(y3,y3);
plot(correl3);
Maximum1=max(correl1)
Maximum2=max(correl2)
Maximum3=max(correl3)

%On remarque que la valeur de chaque énergie est égale à la valeur max de
%chaque autocorrélation

%c)
figure;
subplot(3,1,1);
intercor1=corr(y1,y2);
plot(intercor1);
subplot(3,1,2);
intercor2=corr(y1,y3);
plot(intercor2);
subplot(3,1,3);
intercor3=corr(y2,y3);
plot(intercor3);

6.2
close all;
clear all;

load correl_data.mat

%a)
subplot(3,1,1);
plot(dsss);
title('Signal dsss');
subplot(3,1,2);
plot(cs1, '-r');
title('Signal cs1');
subplot(3,1,3);
plot(cs2);
title('Signal cs2');
Ecs1=sum(cs1.^2)
Ecs2=sum(cs2.^2)

%b)
figure;
cor1=corr(dsss,cs1); %intercorrélation entre le signal mutltiplexé et le code le plus long cs1
plot(cor1);

function r=corr(x,y)
b=length(y); % longueur de y
x=[x zeros(1,b)]; % x = x suivit d'autant de zéros que b
a=length(x); % longueur de x
buff=zeros(1,b); % initialisation du buffer
z=[];
for k=1:a % k allant de 1 à longueur de x
buff=[buff(2:end) x(k)]; % buff = buff suivit de x
r(k)=sum(y.*buff); % corrélation de y avec buff
end

arnaud13330
Niveau 1
15 décembre 2010 à 22:25:07

%**********V-2)***********
close all;
clear all;
%a)
T0=1;
T1=0.1;
N=2^9;
dt=T0/(N-1);
ti=-(T0/2);
tf=T0/2;
t=linspace(ti,(tf-dt),N);
s1= 2*(abs(t)<T1/2);
subplot(3,1,1);
stem(t,s1);

S1=fft(s1)/N;
S1=fftshift(S1);

df=1/T0; % <-> fo=1/T0 intervalle en fréquence
k=-N/2:((N/2)-1);

f=k*df;
subplot(3,1,2);
plot(f,abs(S1));

subplot(3,1,3);
argS1=angle(S1);
stem(f,argS1);

1986_inside
Niveau 10
24 novembre 2012 à 23:35:32

:-)

Oscar5597
Niveau 10
07 décembre 2012 à 14:24:41

Le batard :rire:

Mario-SlaceII
Niveau 53
07 décembre 2012 à 14:25:20

Ca sert à quoi ce truc ? :noel:

Oscar5597
Niveau 10
07 décembre 2012 à 14:26:13

Une anti seche :rire:

3615-18
Niveau 10
07 décembre 2012 à 14:26:38

ça sent le cheat ici :fier:

1
Sujet : Script TP Matlab
   Retour haut de page
Consulter la version web de cette page