正弦波绘图

时间:2017-06-06 10:42:05

标签: for-loop if-statement plot sin

我试图产生一个在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

1 个答案:

答案 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)