Aide sur matlab
funfiles
Messages postés
135
Date d'inscription
Statut
Membre
Dernière intervention
-
yababas -
yababas -
Bonjour tous alors voila je suis un débutant sur le logiciel matlab je voulais savoir est il possible de simuler la variation d'une onde electromagnetique sur matlab je veux dire par la son evolution dans la temps.si c'est le cas comment faire svp.
MERCI
MERCI
A voir également:
- Aide sur matlab
- Gnu octave matlab - Télécharger - Édition & Programmation
- Commande DTC sur Matlab - Forum Matlab
- Programmer avec MATLAB ✓ - Forum Matlab
- Termes de Matlab ✓ - Forum Matlab
- Problème diffusion matlab - Forum Matlab
2 réponses
Ta question est extrêment vague... Et la réponse serait un peu compliquée... Mais bon c'est noel alors....
Voilà un script qui fait ça. Y'a plus qu'à exécuter.
Ciao
++
% Superposition d'ondes stationnaires.
clear all
close all
disp('*******NOUVELLE SIMULATION**************');
% Simulation de la vibration cumulée de plusieurs ondes stationnaires
% sur une corde (magique car dépourvue de conditions aux limites)...
%
% Chaque mode est de la forme :
% Y(t,x) = Amp * cos(2*pi*t*Freq+PhaseFreq) * cos(2*pi*x*Mode/Longueur+PhaseSpatial)
%
% Pour une corde réelle, les conditions de dirichlet aux limites
% imposeraient :
% Mode est un entier. (ex : mode == 1 correspond au fondamental).
% Freq = FrequenceFond * Mode;
% TabAmp = RatioAmplitude ^ Mode; (à peu près, avec 0<RatioAmplitude<1)
% PhaseFreq = 0;
% PhaseSpatial = 0;
%
% En fait, la période spatiale de l'onde stationnaire vaut :
% Période = Longueur / Mode;
%
%
% Mais comme c'est une corde virtuelle, on peu choisir Mode non entier, et
% fixer à sa convenance la frequence correspondante et tout le reste.
%%%%%%%%%%%%%%%%%%%%%%%%
% PARAMETRES DES MODES %
% STATIONNAIRES %
%%%%%%%%%%%%%%%%%%%%%%%%
FrequenceFond = 0.5; % En Hertz (là c'est très lent...)
RatioAmplitude = 1; % Ratio de l'amplitude entre deux modes successifs
TypeOndes = 2;
switch TypeOndes
case 1
% Numéro des Modes de la corde
TabMode = [3 5];
% Nombre de modes
NbModes = length(TabMode);
% Liste des fréquences (en Hertz)
TabFreq = FrequenceFond * [5 5];
% Déphasage Temporel (en radian)
TabPhaseT = [0 0];
% Liste des amplitudes (en Hertz)
TabAmp = RatioAmplitude.^[1 1];
% Déphasage Spatial (en radian)
TabPhaseX = [0 0];
case 2
% Nombre de modes
NbModes = 6;
% Numéro des Modes de la corde
TabMode = (1:NbModes);
% Liste des fréquences (en Hertz)
TabFreq = FrequenceFond * TabMode;
% Déphasage Temporel (en radian)
TabPhaseT = zeros(size(TabMode));
% Liste des amplitudes (en Hertz)
TabAmp = RatioAmplitude.^TabMode;
% Déphasage Spatial (en radian)
TabPhaseX = zeros(size(TabMode));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% PARAMETRES DE %
% DISCRETISATION SPATIALE %
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Longueur de la corde (mêtres)
Longueur = 1;
% Nombre de pas d'espace :
NX = 50;
% Vecteur des x :
X = linspace(0,Longueur,NX);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% PARAMETRES DE %
% DISCRETISATION TEMPORELLE %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Durée de la simulation (secondes)
Tmax = 3;
% Nombre de pas de temps pas seconde :
NTsec = 20;
% Nombre de pas de temps total :
NT = fix(NTsec*Tmax);
% Pas de temps :
dt = 1/NTsec;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% INITIALISATION DE LA BOUCLE %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
t = 0;
% Ytotal est l'amplitude de l'oscillation
% en chaque point de la corde.
Ytotal = zeros(1,NX);
% Paramètres d'affichage :
AmplitudeMax = sum(TabAmp);
NbModePlot = min(3,NbModes);
for it = 1:NT
t = t+dt;
Ytotal(:) = 0;
for im = 1:NbModes
% On fait une boucle sur l'ensemble des modes pour les
% ajouter un par un.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Calcul des valeurs pour CE mode %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Y = TabAmp(im) * ...
cos(2*pi* t * TabFreq(im) + TabPhaseT(im)) * ...
cos(2*pi* X * TabMode(im)/Longueur + TabPhaseX(im));
% affichage de ce mode dans sa petite fenêtre rien que pour lui
% à condition qu'il soit dans NbModePlot 1er modes.
if (im<=NbModePlot)
subplot(NbModePlot+1,1,im);
plot(X,Y);
axis([0 Longueur -1.2*TabAmp(im) +1.2*TabAmp(im)]);
ylabel(['Mode N°' num2str(im)]);
end
% Ajout aux autres modes
Ytotal = Ytotal + Y;
end
% Affichage de la somme des modes
subplot(NbModePlot+1,1,NbModePlot+1);
plot(X,Ytotal);
axis([0 Longueur -1.2*AmplitudeMax +1.2*AmplitudeMax]);
xlabel(['Somme des ' num2str(NbModes) ' modes.']);
drawnow;
end
Voilà un script qui fait ça. Y'a plus qu'à exécuter.
Ciao
++
% Superposition d'ondes stationnaires.
clear all
close all
disp('*******NOUVELLE SIMULATION**************');
% Simulation de la vibration cumulée de plusieurs ondes stationnaires
% sur une corde (magique car dépourvue de conditions aux limites)...
%
% Chaque mode est de la forme :
% Y(t,x) = Amp * cos(2*pi*t*Freq+PhaseFreq) * cos(2*pi*x*Mode/Longueur+PhaseSpatial)
%
% Pour une corde réelle, les conditions de dirichlet aux limites
% imposeraient :
% Mode est un entier. (ex : mode == 1 correspond au fondamental).
% Freq = FrequenceFond * Mode;
% TabAmp = RatioAmplitude ^ Mode; (à peu près, avec 0<RatioAmplitude<1)
% PhaseFreq = 0;
% PhaseSpatial = 0;
%
% En fait, la période spatiale de l'onde stationnaire vaut :
% Période = Longueur / Mode;
%
%
% Mais comme c'est une corde virtuelle, on peu choisir Mode non entier, et
% fixer à sa convenance la frequence correspondante et tout le reste.
%%%%%%%%%%%%%%%%%%%%%%%%
% PARAMETRES DES MODES %
% STATIONNAIRES %
%%%%%%%%%%%%%%%%%%%%%%%%
FrequenceFond = 0.5; % En Hertz (là c'est très lent...)
RatioAmplitude = 1; % Ratio de l'amplitude entre deux modes successifs
TypeOndes = 2;
switch TypeOndes
case 1
% Numéro des Modes de la corde
TabMode = [3 5];
% Nombre de modes
NbModes = length(TabMode);
% Liste des fréquences (en Hertz)
TabFreq = FrequenceFond * [5 5];
% Déphasage Temporel (en radian)
TabPhaseT = [0 0];
% Liste des amplitudes (en Hertz)
TabAmp = RatioAmplitude.^[1 1];
% Déphasage Spatial (en radian)
TabPhaseX = [0 0];
case 2
% Nombre de modes
NbModes = 6;
% Numéro des Modes de la corde
TabMode = (1:NbModes);
% Liste des fréquences (en Hertz)
TabFreq = FrequenceFond * TabMode;
% Déphasage Temporel (en radian)
TabPhaseT = zeros(size(TabMode));
% Liste des amplitudes (en Hertz)
TabAmp = RatioAmplitude.^TabMode;
% Déphasage Spatial (en radian)
TabPhaseX = zeros(size(TabMode));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% PARAMETRES DE %
% DISCRETISATION SPATIALE %
%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Longueur de la corde (mêtres)
Longueur = 1;
% Nombre de pas d'espace :
NX = 50;
% Vecteur des x :
X = linspace(0,Longueur,NX);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% PARAMETRES DE %
% DISCRETISATION TEMPORELLE %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Durée de la simulation (secondes)
Tmax = 3;
% Nombre de pas de temps pas seconde :
NTsec = 20;
% Nombre de pas de temps total :
NT = fix(NTsec*Tmax);
% Pas de temps :
dt = 1/NTsec;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% INITIALISATION DE LA BOUCLE %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
t = 0;
% Ytotal est l'amplitude de l'oscillation
% en chaque point de la corde.
Ytotal = zeros(1,NX);
% Paramètres d'affichage :
AmplitudeMax = sum(TabAmp);
NbModePlot = min(3,NbModes);
for it = 1:NT
t = t+dt;
Ytotal(:) = 0;
for im = 1:NbModes
% On fait une boucle sur l'ensemble des modes pour les
% ajouter un par un.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Calcul des valeurs pour CE mode %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Y = TabAmp(im) * ...
cos(2*pi* t * TabFreq(im) + TabPhaseT(im)) * ...
cos(2*pi* X * TabMode(im)/Longueur + TabPhaseX(im));
% affichage de ce mode dans sa petite fenêtre rien que pour lui
% à condition qu'il soit dans NbModePlot 1er modes.
if (im<=NbModePlot)
subplot(NbModePlot+1,1,im);
plot(X,Y);
axis([0 Longueur -1.2*TabAmp(im) +1.2*TabAmp(im)]);
ylabel(['Mode N°' num2str(im)]);
end
% Ajout aux autres modes
Ytotal = Ytotal + Y;
end
% Affichage de la somme des modes
subplot(NbModePlot+1,1,NbModePlot+1);
plot(X,Ytotal);
axis([0 Longueur -1.2*AmplitudeMax +1.2*AmplitudeMax]);
xlabel(['Somme des ' num2str(NbModes) ' modes.']);
drawnow;
end