Поскольку я новичок в Matlab, прошу прощения, очень ли это базовый вопрос или нет, но хотел бы попробовать.
Я создал имя файла .m с именем Assgn_Modulation, которое включает функцию [sm] = модуляция (ss, fc, mtype), и я пытаюсь передать саму всю функцию, включая переменные и т. Д., В новую функцию в новом файле .m с именем Assgn_Whitenoise, который включает функцию [w] = white_noise (Нет, см).
function [w]= white_noise(No,sm)
[sm]= modulation(ss,2500,1)
Fs=44100;
total= length(ss)/ Fs
t=linspace(0,total,length(ss));
t=t';
No= input('Power of noise=');
w=awgn(sm,No);
plot(t,w)
end
Однако я получаю сообщение об ошибке, показанное ниже, так что мне не удалось вызвать функцию друг друга.
Undefined function or variable 'modulation'.
Error in Assgn_WhiteNoise (line 3)
[sm]= modulation(ss,2500,1)
EDIT =
Сначала я модулировал аудиоволну (ss) через matlab, модулировал аудиоволну (sm), затем я хочу добавить белый шум к модулированной волне (sm), чтобы создать шумовой сигнал (w) под этой функцией [w] = white_noise (Нет, см). Но я должен определить см, чтобы продолжить операцию
Написание этого кода [sm] = модуляция (ss, fc, 1) вообще не работало.
Код, который я привел ниже, работает без проблем, но я пытаюсь использовать его вывод sm в другой функции под названием function [w] = white_noise (No, sm).
'function [sm]= modulation(ss,fc,mtype)
[ss,Fs]= audioread('C:\Users\furka\Documents\MATLAB\sample.wav'); %audio waveform to be modulated is loaded.
Fs %sampling frequency is 44.1kHz for the audio waveform.
totalTime= length(ss)/ Fs
t=linspace(0,totalTime,length(ss));
t=t'; %so that linspace return row vector to convert it to column ,transpose is taken for matching.
%modulating signal
subplot(3,1,1)
plot(t,ss)
title('Modulating signal(sample.wav)');
xlabel('Time(Seconds)');
ylabel('Magnitude');
xlim([0.01 0.03]);
%Carrier Signal
fc= input('Carrier Frequency='); %carrier frequency will be determined by the user
subplot(3,1,2)
plot(t,cos(2*pi*fc*t))
title('Carrier signal');
xlabel('Time(Seconds)');
ylabel('Magnitude');
xlim([0.01 0.03]);
mtype= menu('Modulation type?','dsb','dsbsc','ssb','fm'); %modulation type will be determined by the user
%modulated signal
%DSB MODULATION
if mtype==1
ka= 0.7;
sm= ss.*(1+ka*cos(2*pi*fc*t));
subplot(3,1,3)
plot(t,sm)
xlim([0.01 0.03]);
title('Doubleside band modulation');
xlabel('time(seconds)');
ylabel('Magnitude');
%DSBSC MODULATION
elseif mtype==2 %if doublesideband suppress carrier is selected the statements below will be carried out.
sm = ss.*cos(2*pi*fc*t);
subplot(3,1,3)
plot(t,sm)
xlim([0.01 0.03]);
title('Doubleside band suppress carrier modulation');
xlabel('time(seconds)');
ylabel('Magnitude');
%SSB MODULATION
elseif mtype==3
sm=0.5*[ss.*cos(2*pi*fc*t)-hilbert(ss).*sin(2*pi*fc*t)];
subplot(3,1,3)
plot(t,sm)
xlim([0.01 0.03]);
title('singleside band modulation');
xlabel('time(seconds)');
ylabel('Magnitude');
%FM MODULATION
elseif mtype==4
kf=0.1; %frequency sensitivity.
sm= cos(2*pi*fc*t + 2*pi*kf*trapz(t,ss));
subplot(3,1,3)
plot(t,sm)
xlim([0.01 0.03]);
title('Frequency modulation');
xlabel('time(seconds)');
ylabel('Magnitude');
end
end
'