我试图产生一个在0.004秒的时间间隔内有规律地切断的正弦波(在0到0.004秒时输出为正弦波,然后在0.004秒到0.008秒时输出为零。这个将以类似的方式继续)。
我尝试了以下代码,但它没有生成正确的输出。
f=10000000000;
k=0;
for i=0:0.004:1
k=k+1;
if(mod(k,2)~=0)
t=i:0.001:i+0.004;
y=sin(2*3.14*f*t);
plot(t,y);
else
t=i:0.001:i+0.004;
y=0;
plot(t,y);
end
end
答案 0 :(得分:0)
对于Matlab中的绘图,您需要一个x值数组,以及要绘制的整个部分的y值的相应数组。所以你想首先创建一个对应于从0到1.004的时间的x数组(如果我正确理解你的代码),并创建一个相同长度的数组,并用相应的正弦填充它0值。
f = 10000000000;
% generate evenly spaced x axis of 251*n+1 points evenly spaced between 0 and 1.004 (i.e. spacing between two points is 0.004/n). n should be an integer.
t = linspace(0, 1.004, 251*n+1);
% generate unchopped sine
y = sin(2*3.14*f*t);
% set desired intervals to zero
for i=1:251*n+1 % for each index in y
% if the corresponding entry in t is a multiple of 0.008, backfill y with zeros for 0.004s.
if(mod(t(i), 0.008)==0)
if(i>1-n)
for j=i-n:i
y(j) = 0;
end
end
end
end
plot(t, y)