私は、振幅、持続時間、周波数の異なる13の波形を生成するMATLAB上のプログラムを作成しています。各波形は5回繰り返されます。つまり、合計で65回の試行があります。n行m列の行列の要素からn正弦波を作成するにはどうすればよいですか?
各試行の合計の長さ= 1.5 ms。サンプリング周波数= 4kHz。私は波が0.5ミリ秒で始まることを望みます。波が始まる前に、そのオフセットに続いて、振幅をゼロにしたい(すなわち、波の前後の「フラットライン」)。
65行の正弦波の周波数( 'hz')、振幅( 'a')、期間(ms)を表す65x3の行列を作成しました。各行は単一の波を表します。
この65x3マトリックスに含まれている情報を使用して、振幅 'a'、周波数 'hz'、および継続時間 'ms'の65の正弦波を生成します。具体的には、行列のn番目の行で指定されたパラメータ(hz、a、ms)を使用して各波を作成する必要があります。例えば。行1 = 100,150の場合...これは50ms持続する100Hzの正弦波(振幅= 1)を生成したいことを意味します。
私はこの問題を解決するためにforループを構築しようとしました。しかし、ループはいくつかのエラーを返すので、それらを解決する方法がわかりません。エラーが返されないポイントにコードを適用しました。しかし、私の最近の試みは、実際には各波の持続時間がベクトル 'ms'に記載されたものでなければならない場合、等しい持続時間の65波を生成すると思われる。
ここで私の最新の、初心者ですがまだ失敗した試みがあります:(試行は上記の65x3マトリックスを表し、mA =振幅です)。
hz=trials(:,1); mA=trials(:,2); ms=trials(:,3);
trials_waves=zeros(65,500); % the max duration (= 500ms); unsure of this part?
for n = 1:size(order,1)
trials_waves = mA*sin(2*pi*hz*0:ms);
end
提供された情報が不十分な場合は、お詫び申し上げます。このウェブサイトで私が質問したのはこれが初めてです。必要に応じてさらに情報を提供することができます。
ありがとうございました。
ベスト、 H
ループ内で 'trials_waves'を上書きしています。 – excaza