【问题标题】:Manipulating an .m file from another function从另一个函数操作 .m 文件
【发布时间】:2016-09-07 03:06:52
【问题描述】:

所以我创建了一个 .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 

【问题讨论】:

  • Signal函数的调用在哪里?
  • 它应该是 SWave 所在的位置。我替换了那个
  • 代码有错误。它是不可执行的

标签: matlab function signal-processing modulation


【解决方案1】:

信号生成的结果存储在DSB函数下面一行的变量sig中:

sig = Signal;

因此,调制生成信号的进一步操作应使用sig 变量,而不是尝试使用在Signal 范围内定义的本地sawtooth 变量。然后您还应该注意,Matlab 中的符号u(sig) 表示一个向量u,它由sig 中的值索引,而不是变量sig 的函数u 的数学概念。

因此,要计算调制信号向量,您将使用:

u = sig.*c; % Multiplying the signal 

最后,要在同一图形上绘制结果,您可以使用hold command,或者使用单独的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');

这应该会给你以下结果:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    • 1970-01-01
    相关资源
    最近更新 更多