2017-06-06 32 views
0

0.004秒の時間間隔で定期的にチョップされるsin波を生成しようとしています(出力は時間0〜0.004秒でsin波になり、出力は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

私は私の記述を編集しました。 –

答えて

0

Matlabでプロットするには、x値の配列と、プロットするセクション全体のy値の対応する配列が必要です。だから0から1.004までの時間に対応するx配列を作成したい(コードを正しく理解していれば)のy配列を作成し、対応するサインと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) 
+0

あなたのコードを試しましたが、エラーが発生しました.Y(3.984)にアクセスしようとしましたが、インデックスは正の整数または論理でなければなりません –

+0

@Ishant Tiwari、私の以前のアプローチは一般的なnでは動作しませんでした。正の整数nで動作するはずです。たとえば、0.004と0.008の間のセクションに対応するyのインデックスにアクセスしようとしており、インデックスはカウントのように機能するため、正の整数でなければなりません。 –

+0

はまだ機能しませんでした。 –