信号とシステム分析2026(春)課題要項:第1回課題

信号とシステム2025(春)課題要項および参考解答集
信号とシステム2025年春期末試験問題
信号とシステム2026(春)課題要項および参考解答集

簡介:
2025年春の信号とシステムの課題について。
この課題は基礎問題と選択問題の2部で構成され、主に信号波形の描画と関数表現の書き方を扱います。基礎問題には単辺指数信号、有限長正弦信号、減衰振動信号などの一般的な信号の波形描画が含まれます。選択問題ではインダクタ放電信号、sinc関数の積信号などの複雑な波形分析が含まれます。課題では正確な座標、単位、重要なポイントなどの情報を付加して描画することを強調します。描画にはMATLABやPythonを使用することが可能です。一部の問題は去年のものと同じですがパラメータが変わりますので注意が必要です。課題の提出には必須問題と少なくとも1問の選択問題が含まれる必要があります。関連するチュートリアルビデオや参考資料も提供されており、特殊な信号の描画技術を理解するのに役立ちます。

キーワード: 信号とシステム分析, 第1回課題

01 基礎課題

課題には必須問題選択問題が含まれています。必須問題は提出課題に含める必要があります。選択問題は考えや練習を深めるために使用します。遅延提出の場合、選択問題の少なくとも1問を含める必要があります。

一、信号波形の描画

以下の信号の関数表現から信号の波形を描画してください。注意事項:

  • tを変数とする信号は連続時間信号、nを変数とする信号は離散時間信号です。離散時間信号の波形は「マッチスティック」スタイルで描画します。
  • 問題には奇异関数u(t), δ(t)などが含まれます。
  • 描画には手書きまたはMATLAB、Pythonなどのプログラミング言語を使用できます。描画時に以下の重要な情報を含めてください:
    • 座標系、軸; 変数名、関数名、単位;
    • 重要なポイントでの関数値;タイトル、注釈等;
    • 信号の変化傾向を示すエンベロープ線と漸近線;

1. 必須問題

注意:今年の課題の形式は去年(2025年)のものとほとんど同じですが、各小問題のパラメータは異なります。必ず問題内のパラメータに注意してください。

  • (1) 単辺指数信号
  • (2) 有限長の正弦信号
  • (3) 右側指数減衰振動信号
  • (4) 複合信号
  • (5) 単辺減衰振動シーケンス
  • (6) 奇妙な周期シーケンス

シーケンス関数の自変数はnの2乗です。このシーケンスが周期シーケンスであるかどうか観察してください。

2. 選択問題

  • (1) インダクタ放電信号波形
  • (2) sinc関数の積信号
  • (3) 双方向sinc関数シーケンス
  • (4) 無限の極大値・極小値を持つ有限長信号
  • (5) 発散する周期信号

二、信号関数表現の書き方

以下の信号の波形から対応する関数表現を書き出してください。同じ波形でも複数の等価な関数表現が存在することがあります。

1. 必須問題

  • (1) 三角信号
  • 
    import numpy as np
    import matplotlib.pyplot as plt
    
    t = np.linspace(-2.00, 2.00, 2500)
    
    def fwin(begin, stop, tt=t):
        return np.heaviside(tt - begin, 0.5) - np.heaviside(tt - stop, 0.5)
    
    t = np.linspace(-3, 3, 3000)
    ft = 1.5 * (t + 1) * fwin(-1, 0) + ((1.5 - 2 * t) * fwin(0, 0.75))
    
    plt.plot(t, ft, lw=3)
    plt.xlabel("t", color="steelblue", fontsize=24)
    plt.ylabel("f(t)", color="steelblue", fontsize=24)
    plt.xlim(min(t) - (max(t) - min(t)) / 20, max(t) + (max(t) - min(t)) / 20)
    plt.ylim(-1, 3)
    plt.tight_layout()
    plt.show()
    
  • (2) 分段ステップ信号
  • 
    import numpy as np
    import matplotlib.pyplot as plt
    
    t = np.linspace(-2.00, 2.00, 2500)
    
    def fwin(begin, stop, tt=t):
        return np.heaviside(tt - begin, 0.5) - np.heaviside(tt - stop, 0.5)
    
    t = np.linspace(-3, 3, 3000)
    ft = 1 * fwin(min(t), 0) + 2 * fwin(0, 1.5) + 0.5 * fwin(1.5, 2) + 2 * fwin(2, 3)
    
    plt.plot(t, ft, lw=3)
    plt.xlabel("t", color="steelblue", fontsize=24)
    plt.ylabel("f(t)", color="steelblue", fontsize=24)
    plt.xlim(min(t) - (max(t) - min(t)) / 20, max(t) + (max(t) - min(t)) / 20)
    plt.ylim(-1, 2.5)
    plt.tight_layout()
    plt.show()
    
  • (3) 升余弦信号
  • (4) ガウス調制信号
  • 
    import numpy as np
    import matplotlib.pyplot as plt
    
    t = np.linspace(-5.00, 5.00, 2500)
    omega = 3 * np.pi
    sigma = 2
    
    ft = np.exp(-(t / sigma) ** 2) * np.sin(omega * t)
    ftg = np.exp(-(t / sigma) ** 2)
    ftsin = np.sin(omega * t)
    
    def fwin(begin, stop, tt=t):
        return np.heaviside(tt - begin, 0.5) - np.heaviside(tt - stop, 0.5)
    
    plt.plot(t, ft, lw=4, label='f(t)')
    plt.plot(t, ftg, '--', lw=1, label='Gause(t)')
    plt.plot(t, -ftg, '--', lw=1, label='-Gause(t)')
    plt.plot(t, ftsin, '--', lw=1, label='sin(t)')
    plt.xlabel("t", color="steelblue", fontsize=16)
    plt.ylabel("f(t)", color="steelblue", fontsize=16)
    plt.xlim(min(t) - (max(t) - min(t)) / 20, max(t) + (max(t) - min(t)) / 20)
    plt.ylim(-2, 2)
    plt.legend(loc='upper right')
    plt.tight_layout()
    plt.show()
    

2. 選択問題

  • (1) 周期的な矩形波信号
  • (2) ステップ減衰信号
  • 
    import numpy as np
    import matplotlib.pyplot as plt
    
    t = np.linspace(-0.5, 1.5, 2500)
    
    def fwin(begin, stop, tt=t):
        return np.heaviside(tt - begin, 0.5) - np.heaviside(tt - stop, 0.5)
    
    f = fwin(0, 0)
    
    for n in range(10):
        startx = 1 - np.exp(-n * np.log(2))
        endx = 1 - np.exp(-(n + 1) * np.log(2))
        f += fwin(startx, endx) * (1 - startx)
    
    plt.plot(t, f, lw=4)
    plt.xlabel("t")
    plt.ylabel("f(t)")
    plt.xlim(min(t) - (max(t) - min(t)) / 20, max(t) + (max(t) - min(t)) / 20)
    plt.ylim(-0.25, 1.25)
    plt.tight_layout()
    plt.show()
    

三、信号の周期性の判定

1. 必須問題

  • (1) 正弦信号の合成
  • (2) 位相調制信号
  • (3) 全波整流信号
  • (4) 余弦信号の立方
  • (5) 自変数が平方の正弦信号
  • (6) 自変数が立方の余弦波シーケンス

離散時間信号と前回の連続時間信号の違いと共通点を比較してください。

2. 選択問題

  • (1) 離散振動シーケンス
  • (2) 判断問題
    • 非周期信号と周期信号の合成は周期信号になる可能性があります。(○, ✕)
    • 非周期信号と非周期信号の合成は周期信号になる可能性があります。(○, ✕)
  • (3) 判断問題
  • y[n] = x[3n]のとき、

    • y[n]が周期信号であれば、x[n]も周期信号であるか?
    • x[n]が周期信号であれば、y[n]も周期信号であるか?

四、インパルス信号の特性

インパルス信号δ(t)、インパルス偶関数δ'(t)のサンプリング特性を利用して以下の定積分の値を求めます。
クラス内でまずインパルス信号の基本概念について学びました。
サンプリング特性については後述します。この部分では講義資料【1.1.3.3.2】の単位インパルス信号の3つの定義(関数発展定義、Dirac定義、分配関数定義)を読むことによって、以下の特性を理解してください。

  • 単位インパルス信号のサンプリング特性
  • 単位インパルス信号の偶対称性
  • 単位インパルス信号のスケール特性

これらの特性については講義資料【1.1.3.3.3】のまとめ表をご覧ください。

1. 必須問題

  • (1)
  • (2)
  • (3)

注意:t0が0より大きい場合と0より小さい場合の積分結果を別々に考察してください。

2. 選択問題

  • (1)
  • (2)
  • (3)

02 実践内容

以下の2つの実践問題はどちらかを選択して行い、信号表現方法と情報伝達の間の関係を理解し、MATLABやPYTHONの信号処理パッケージを初めることができます。

一、DTMF音声中の電話番号

この問題の背景は、「技術者の逆襲 - 牛逼大学生が360社長周鸿祎の携帯電話番号を解読」で紹介された興味深いニュースです。

1. 問題要項

以下のリンクから携帯電話ダイヤル音声をダウンロードし、MATLABやPYTHONのspectrogram関数を利用してその音声信号の時頻分布図を取得します。各音声信号に対応する周波数バンドの組み合わせから電話音声中の電話番号を識別します。

2. プログラミング処理例

  • (1) MATLAB例
  • 
    [s, fs] = audioread('e:\'bbflash\'2.wav');
    spectrogram(s(:,1), 2048, 1024, 1:2000, fs, 'yaxis');
    plot((0:length(s)-1)/fs, s);
    
  • (2) PYTHON例
  • PYTHONで信号のSpectrogramを表示するには、以下のブログ記事の例を参照してください。

    • DTMF信号の品質検査

二、音声中の画像

音声中にデジタルコードだけでなく、画像情報を埋め込むことも可能です。次の音声には「中秋佳節」という手書き画像と人頭の肖像画が埋め込まれています。MATLABで以下のように音声データを読み込み、次のように時頻分析図スペクトログラムを描画します。

  • soudndata = audioread(...)
  • spectrogram(sounddata, 4096,2048,500:2000,fs,'yaxis')

1. 問題要項

ネットワーク学堂のコースファイルからHOMEWORK.MP3というオーディオデータファイルをダウンロードし、FFT(高速フーリエ変換)を利用して音声中の画像を描画します。

タグ: 信号処理 システム解析 MATLAB Python DTMF

8月2日 10:51 投稿