2016-05-11 4 views
1

Alors j'ai créé un fichier .m contenant une onde de signal en dents de scie que j'essaie de moduler. Je n'ai aucun Problème produisant la forme d'onde mais quand j'essaye de prendre le dossier .m et le multiplie par "c" MATLAB renvoie la forme d'onde originale. Ce programme spécifique utilise la technique de modulation à double bande latérale. Le premier morceau est ma forme d'onde.Manipulation d'un fichier .m à partir d'une autre fonction

function y = Signal 
% Signal Summary of this function goes here 
n = 23; % Number of Harmonics 
t = 0:.0002:n; % incremental value 
y = sawtooth(t,.2); % Wave creation 
plot(t,y); 
ylabel ('Amplitude'); 
xlabel ('Time'); 
title('Sawtooth Wave'); 

end 

Cette pièce suivante est là où je suis en train d'appeler le fichier .m, il faut multiplier par « c » et tracer la fonction résultante.

function [ DSBModulation ] = DSB(DSBModulation) 
% Program for DSB-AM 

n = 23; 
fc = 100; 
t = 0:.0002:n; 
sig = Signal; % this is how im trying to call the .m file so i can manipulate it 

c = cos((2*pi*fc*t)); % using this as the modulating function 
u(sig) = (sawtooth(t,.2)).*c; % Multiplying the signal 
plot(t,u(sig)); %Displaying the Signal 

end 
+2

Où est l'appel à la fonction 'Signal'? – Harjatin

+0

Il devrait être où SWave est à. J'ai remplacé ce – Zanderg

+0

le code a une erreur. Ce n'est pas exécutable – Harjatin

Répondre

0

Le résultat de la génération de signal est stockée dans le sig variable sur la ligne suivante de la fonction DSB:

sig = Signal; 

opération outre pour moduler le signal généré devrait donc se servir de cette variable sig au lieu d'essayer d'utiliser la variable locale sawtooth définie dans la portée de Signal. Notez également que la notation u(sig) dans Matlab représente un vecteur u qui est indexé par les valeurs dans sig, plutôt que la notion mathématique d'une fonction u de la variable sig.

Donc, pour calculer votre vecteur de signal modulé vous ainsi utiliser:

u = sig.*c; % Multiplying the signal 

Enfin, pour tracer les résultats sur la même figure que vous pouvez utiliser le hold command ou utiliser figure séparés (sinon votre deuxième commande plot effacera le graphique de la première plot):

close all; 
plot(t,u); %Displaying the Signal 
hold on; plot(t,sig,'r','LineWidth',3); % Overlay the unmodulated signal for reference 

ylabel ('Amplitude'); 
xlabel ('Time'); 

qui devrait vous donner le résultat suivant:

enter image description here