Управление файлом.m из другой функции

Поэтому я создал файл.m, который имеет пилообразную сигнальную волну, которую я пытаюсь смодулировать. У меня нет проблем с созданием формы волны, но когда я пытаюсь взять файл.m и умножить его на "c", MATLAB возвращает исходную форму волны. Эта конкретная программа использует технику модуляции двойной боковой полосы. Первая часть - это моя форма волны.

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

На следующем этапе я пытаюсь вызвать файл.m, умножить его на 'c' и построить результирующую функцию.

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 

1 ответ

Результат генерации сигнала сохраняется в переменной sig на следующей строке DSB функция:

sig = Signal;

Таким образом, дальнейшая операция по модуляции генерируемого сигнала должна использовать это sig переменная вместо того, чтобы пытаться использовать местный sawtooth переменная, определенная в области Signal, Тогда вы должны также отметить, что обозначение u(sig) в Matlab представляет вектор u который индексируется значениями в sig, а не математическое понятие функции u переменной sig,

Таким образом, чтобы вычислить ваш вектор модулированного сигнала, вы должны использовать:

u = sig.*c; % Multiplying the signal 

Наконец, чтобы построить результаты на том же рисунке, вы можете использовать hold команда или иным образом использовать отдельный figure (иначе ваш второй plot команда сотрет график первого 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');

Что должно дать вам следующий результат:

Другие вопросы по тегам