Matlab 截断正弦信号

Matlab 截断正弦信号,matlab,plot,signals,Matlab,Plot,Signals,我想画一个截断的正弦信号。我尝试的是: tstep = 0.1; t = -1:0.05:2; f0 = 1; fi = 10; t = 0:tstep:2; s = sin(2*pi*f0*t+fi); plot(t,s); 我必须得到这样的东西(对于f0=1): 问题内容如下: 编写绘制截断正弦信号的Matlab程序: s(t)=PT(t)sin(2πf0t+φ) 其中: T=1fixed f0是从GUI(键盘)输入的1和10之间的整数 φ是在0和2π辐射度之间随机生成的相位 您已经定

我想画一个截断的正弦信号。我尝试的是:

tstep = 0.1;
t = -1:0.05:2;
f0 = 1;
fi = 10;
t = 0:tstep:2;
s = sin(2*pi*f0*t+fi);
plot(t,s);
我必须得到这样的东西(对于
f0=1
):


问题内容如下:

编写绘制截断正弦信号的Matlab程序:
s(t)=PT(t)sin(2πf0t+φ)

其中:
T=1
fixed
f0
是从GUI(键盘)输入的
1
10
之间的整数
φ
是在
0
辐射度之间随机生成的相位


您已经定义了
fi=10
<根据您的问题陈述,code>fi应该在
0
之间随机生成。此外,这一行什么也不做:
t=-1:0.05:2因为您在几行之后重新定义了
t
。要生成矩形脉冲,可以使用(需要信号处理工具箱)。包含修复程序的完整代码如下所示:

tstep=0.005;     t=-1:tstep:2;      fi = 2*pi*rand(1);
%Loop to take f0 as an integer number between 1 to 10 input from keyboard
while 1
    f0 = input('f0 = ');  %requesting user input
    if mod(f0,1) || f0<1 || f0>10
       %mod checks whether the value is not an integer and then we check 
       %if it doesn't belong to [1,10]
       disp('Wrong value entered. Please enter an integer between 1 to 10');
    else, break;  %break if the correct value is entered
    end
end

PT = pulstran(t,0.5,'rectpuls');  %Generating rectangular pulse
SW = sin(2*pi*f0*t+fi);           %Generating sinusoidal wave

%I have added two plots just so you know what's happening
subplot(1,2,1); 
plot(t, PT, t, SW, 'linewidth', 2);
legend({'Rectangular Pulse','Sinusoidal Wave'},'location','northoutside','NumColumns',2);
xlabel('Time (t)');    ylabel('Signals');

subplot(1,2,2);
y = PT.*SW;
plot(t, y, 'linewidth', 2);
legend('Truncated Sinusoidal Wave','location','northoutside');
xlabel('Time (t)');    ylabel('s(t)');
tstep=0.005;t=-1:t步骤:2;fi=2*pi*rand(1);
%循环将f0作为从键盘输入的1到10之间的整数
而1
f0=输入('f0=');%请求用户输入
如果mod(f0,1)| | f010
%mod检查值是否不是整数,然后我们检查
%如果它不属于[1,10]
disp('输入的值错误。请输入1到10之间的整数');
否则,中断;%如果输入了正确的值,则中断
结束
结束
PT=脉冲串(t,0.5,'rectpuls');%产生矩形脉冲
SW=sin(2*pi*f0*t+fi);%产生正弦波
%我添加了两个情节,只是为了让你知道发生了什么
子批次(1,2,1);
绘图(t、PT、t、SW,‘线宽’,2);
图例({'矩形脉冲','正弦波'},'location','northoutside','NumColumns',2);
xlabel(‘时间(t)’);ylabel(“信号”);
子批次(1,2,2);
y=PT.*SW;
绘图(t,y,'线宽',2);
图例(“截断正弦波”、“位置”、“北外”);
xlabel(‘时间(t)’);ylabel(‘s(t)’);
fi=pi
f0=1
时的结果:


可能还有其他问题,但您的
fi=10
,根据您的问题陈述,它应该在0到2π之间随机生成。此外,这一行什么也不做:
t=-1:0.05:2
是随机生成的,因为您在
t
中存储了不同的值,在几行之后会使其无效,请用谷歌搜索如何拍摄屏幕快照。但是,我把fi静态。。。我尝试使用fi(0,1,5,10)的许多值,但我认为我在
PT(t)
(我想是1)…我的意思是
10∉ [0,2π]
。什么是
PT
PT(t)
是矩形信号。我搜索截断的正弦信号,发现它等于
s(t)=APT(t)sin(2π0t)
,其中APT是矩形信号,
sin(2π0t)
是正弦信号。