Contents
- Jupyter Notebook(ジュピターノートブック)とは
- Jupyter Notebook(.ipynb)とは何か?
- 同じ AM変調 コードを ipynb で実行すると何が違うか
- ipynb 用に セル分割した AM変調 ノート構成
- VSCode用に .ipynbファイルは作りましたが、Markdownセルとは何ですか?あとCodeセルはファイル内に続けてコピペしてRunすればいいのですか?
- セルごとに分けてコピペして「すべて実行」を押しましたが動きません。
- print(“hello”)をRunしたら、次のメッセージが出ました
- コードセルの下に以下の表示出たがどうすればいいか?
- hello が表示されました。あとRunしたのですがコードセル②の左下のマークがくるくる回っていて終わりません。
- インタラプトを押してもくるくる回りです。セルの中身 # 周波数設定 fc = 1_000_000 # 搬送波周波数 [Hz] (1 MHz) fm = 1_000 # 変調波周波数 [Hz] (1 kHz) # AMパラメータ mu = 0.5 # 変調度(0〜1) Ac = 1.0 # 搬送波振幅 # サンプリング fs = 20_000_000 # サンプリング周波数 [Hz] T = 2e-3 # 観測時間 [s](2 ms)
- 右上の Kernel 表示とはどこ?Python3.13.7のそばですか?
- メニュは出ずに、画面最上部の真ん中に検索窓のようなものが開きます。
- ②セルはOK、次のセルでエラーが出ました。
- NameError Traceback (most recent call last) Cell In[2], line 1 —-> 1 t = np.arange(0, T, 1/fs) 3 carrier = Ac * np.cos(2*np.pi*fc*t) 4 message = np.cos(2*np.pi*fm*t) NameError: name ‘np’ is not defined
- ③までOK、④でエラー plt.figure(figsize=(8, 4)) plt.plot(t[:2000], s[:2000]) # 拡大表示 plt.xlabel(“Time [s]”) plt.ylabel(“Amplitude”) plt.title(“AM waveform (time domain)”) plt.grid() plt.show()
- ④はOK、⑤でエラー NameError Traceback (most recent call last) Cell In[8], line 1 —-> 1 S = np.fft.fft(s) 2 freq = np.fft.fftfreq(len(S), d=1/fs) 3 amp = np.abs(S) / len(S) NameError: name ‘s’ is not defined
- セルを直して RunしてすべてOKになりました。解像度が下がったせいかスペクトルが細かく分離できてないようですが、後からいろいろ試してみます。VSCodeで初めてipynbを扱いましたが、使い慣れればかなり便利なものですね。ありがとうございました。
Jupyter Notebook(ジュピターノートブック)とは
Jupyter Notebook(ジュピターノートブック)とは、Webブラウザ上でPythonなどのコードを記述・実行し、その結果(グラフ、数式、テキスト、画像など)を一つの文書にまとめて管理・共有できるオープンソースのWebアプリケーションです。データ分析や機械学習の分野で特に人気があり、コードと説明文、実行結果を対話的に確認できるため、試行錯誤しながら開発を進めたり、研究成果を分かりやすくまとめたりするのに非常に便利です。
主な特徴とできること
対話的なコード実行: コードをセル単位で実行し、その場で結果を確認できます(トライ&エラーが容易)。
コードとドキュメントの一体化: Markdown形式のテキスト(見出し、箇条書きなど)、数式(LaTeX)、グラフ、画像などをコードと並べて記述できます。
豊富な言語対応: Pythonだけでなく、Julia、R言語など、多様な言語に対応しています(Jupyterの由来はJulia, Python, R)。
共有と再現性: 作成したノートブックファイル(.ipynb)は、PDFやHTML形式などにも変換でき、他の人と共有・再現しやすいです。
データサイエンスでの活用: データの読み込み・加工・可視化・モデル学習までの一連の流れを一つの環境で完結でき、データサイエンティストにとって不可欠なツールとなっています。
利用方法
Anaconda: データサイエンスに必要なライブラリとJupyter Notebookがセットになったディストリビューションをインストールするのが一般的です。
pip: Pythonが環境にあれば、pip install jupyterコマンドで単体インストールも可能です。
起動: インストール後、コマンドラインやAnaconda Navigatorから「Jupyter Notebook」を起動すると、Webブラウザで利用できます。
jupyter notebookとはグーグルコラボのこと?
正体: Webブラウザ上でPythonなどのコードを書いて実行・保存できる、オープンソースの対話型開発環境です。
- 特徴: 自分のパソコン(ローカル環境)にインストールして使うのが基本です。
正体: Googleが提供する、環境構築不要の無料クラウド型Jupyterノートブック環境です。
- 特徴: インストール不要でブラウザさえあればすぐ使え、Googleドライブに保存されます。
Jupyter Notebook(.ipynb)とは何か?
Jupyter Notebook(.ipynb)とは?
一言でいうと:
説明(+マークダウン)
コード(+コード)
結果(Printやグラフなど)
を“ノート”のように1つの画面で扱える実行環境です。
拡張子は
.ipynb(Interactive Python Notebook の略)
普通の .py と何が違う?
.py(スクリプト)
-
上から下まで一気に実行
-
結果は別ウィンドウやコンソール
-
「プログラムを書く」向き
.ipynb(ノートブック)
-
セル単位で実行できる
-
実行結果が すぐ下に表示
-
途中経過を見ながら進められる
-
グラフ・数式・文章を混在できる
👉 勉強・解析・実験向き
画面のイメージ
[説明文セル]
↓
[Pythonコードセル]
↓(Shift + Enter)
[結果・グラフがここに表示]
なぜ科学計算でよく使われる?
-
NumPy / matplotlib / FFT
-
データ解析
-
信号処理
-
機械学習
👉 試しながら考える用途に最適。
%matplotlib inline の正体
%matplotlib inline
これは
👉 Jupyter 専用の「マジックコマンド」
意味:グラフを別ウィンドウではなくノート内に埋め込んで表示する
どこで使える?
-
Jupyter Notebook
-
JupyterLab
-
VS Code の Notebook(.ipynb)
❌ .py では使えない
何が嬉しいか(実感ポイント)
-
print しなくても値が見える
-
グラフが一瞬で確認できる
-
FFT の結果をいじりながら理解できる
👉 今回の AM + FFT は ipynb と相性抜群
どうやって使う?
VS Code の場合(簡単)
-
新規ファイル作成
-
拡張子を
.ipynb -
上部の「セル」で実行
(Python 拡張機能が必要)
まとめ
-
.ipynb= 対話型ノート -
セル単位で実行できる
-
結果・グラフがその場に出る
-
%matplotlib inlineは ipynb 専用
次におすすめは
👉 同じ AM コードを ipynb で実行すると何が違うか
👉 セルを分ける設計のコツ(解析が超楽になる)
同じ AM変調 コードを ipynb で実行すると何が違うか
いいテーマです 👍
同じコードでも .py と .ipynb では「体験」が全然違います。
AM 変調の例で、違いをはっきりさせますね。
結論を先に
計算結果は同じ。
違うのは「見え方・試しやすさ・理解の深さ」。
① 実行の単位が違う
.py
上から下まで一気に実行
-
途中を止められない
-
値を確認するには print が必要
.ipynb
セル単位で実行
fc = 1_000_000
fm = 1_000👇
fs = 20_000_000
👇
s = …
👉 1行ずつ理解しながら進められる
② グラフの出方が違う(超重要)
.py
-
グラフは 別ウィンドウ
-
閉じるまで次に進めない
-
実行し直すと全部消える
.ipynb
-
セルの下に埋め込み表示
-
何枚でも連続で比較できる
-
μ を変えた結果を並べて見られる
mu = 0.3👇
mu = 1.2
👉 過変調が一瞬で分かる
③ print しなくても値が見える
.ipynb では 最後の式が自動表示されます。
freq[:10]
👉 配列の中身がそのまま表示
(.py では print 必須)
④ 解析に向いている理由(AM + FFT)
ipynb ならこう書ける
■ AM 波形
[コード]
[波形グラフ]■ FFT[コード]
[スペクトル]
👉 教科書そのもの
⑤ 試行錯誤が圧倒的に楽
例:すぐ比較できる
mu = 0.5↓ 実行
mu = 1.5↓ 実行
👉 グラフ2枚が縦に並ぶ
⑥ %matplotlib inline が効く
.ipynb では
%matplotlib inline
により
-
グラフがノート内に固定表示
-
再実行しても消えない
⑦ 逆に .py が向いている場面
-
最終的なプログラム
-
自動処理
-
バッチ実行
-
配布用コード
まとめ(AM 解析視点)
| 項目 | .py | .ipynb |
|---|---|---|
| 実行単位 | 全体 | セル |
| グラフ | 別窓 | ノート内 |
| FFTの理解 | 普通 | 非常に良い |
| 試行錯誤 | 面倒 | 超楽 |
結論
👉 AM・FFT・信号処理の勉強は ipynb が最適
👉 完成品は .py にする
次は実際に
-
ipynb 用に セル分割した AM ノート構成
-
「ここを変えると何が起きるか」チェック表
ここまでやると、理解が一段上がります。やります?
ipynb 用に セル分割した AM変調 ノート構成
コピペしてRunしてみる
いいですね 👍
では **そのままコピペして Run できる「ipynb 用セル分割構成」**を出します。
VS Code / Jupyter どちらでもOKな形です。
🟦 セル①:タイトル・説明(Markdownセル)
※ ここは Markdownセル にしてください
# AM変調(1 MHz 搬送波 × 1 kHz 変調)
NumPy を使って
- 時間波形
- FFT スペクトル
を確認する
🟦 セル②:ライブラリ読み込み(Codeセル)
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
🟦 セル③:パラメータ設定(Codeセル)
# 周波数設定
fc = 1_000_000 # 搬送波周波数 [Hz] (1 MHz)
fm = 1_000 # 変調波周波数 [Hz] (1 kHz)
# AMパラメータ
mu = 0.5 # 変調度(0〜1)
Ac = 1.0 # 搬送波振幅
# サンプリング
fs = 20_000_000 # サンプリング周波数 [Hz]
T = 2e-3 # 観測時間 [s](2 ms)
🟦 セル④:時間軸と AM 波形生成(Codeセル)
t = np.arange(0, T, 1/fs)
# AM変調波
s = Ac * (1 + mu * np.cos(2*np.pi*fm*t)) * np.cos(2*np.pi*fc*t)
🟦 セル⑤:時間波形の表示(Codeセル)
plt.figure(figsize=(8, 4))
plt.plot(t[:2000], s[:2000]) # 拡大表示
plt.xlabel("Time [s]")
plt.ylabel("Amplitude")
plt.title("AM waveform (time domain)")
plt.grid()
plt.show()
✅中の細かい振動:1 MHz 搬送波
包絡線:1 kHz の cos
🟦 セル⑥:FFT 計算(Codeセル)
S = np.fft.fft(s)
freq = np.fft.fftfreq(len(S), d=1/fs)
amp = np.abs(S) / len(S)
🟦 セル⑦:FFT スペクトル表示(Codeセル)
plt.figure(figsize=(8, 4))
plt.plot(freq, amp)
plt.xlim(990_000, 1_010_000) # 搬送波付近を拡大
plt.xlabel("Frequency [Hz]")
plt.ylabel("Amplitude")
plt.title("AM spectrum (FFT)")
plt.grid()
plt.show()
✅ 999 kHz / 1000 kHz / 1001 kHz にピークが出ます。
🟦 セル⑧:変調度を変えて実験(Codeセル)
mu = 1.2 # 過変調にしてみる
s_over = Ac * (1 + mu * np.cos(2*np.pi*fm*t)) * np.cos(2*np.pi*fc*t)
plt.figure(figsize=(8, 4))
plt.plot(t[:2000], s_over[:2000])
plt.title("Over-modulation (mu = 1.2)")
plt.grid()
plt.show()
👉 包絡線が ひっくり返るのが確認できます。
🟦 セル⑨:まとめ(Markdownセル)
## 確認できたこと
- AM 波形の包絡線 = 変調信号
- FFT で fc ± fm に側波帯が出る
- μ > 1 で過変調が起こる
🎯 このノートの使い方
セル③の fc / fm / mu を変える
FFT の見え方を確認
通信工学の式と対応づける
次の一歩(おすすめ)
搬送波を消す → DSB-SC
包絡線検波を NumPy で実装
音声信号を AM 変調して FFT
VSCode用に .ipynbファイルは作りましたが、Markdownセルとは何ですか?あとCodeセルはファイル内に続けてコピペしてRunすればいいのですか?
めちゃくちゃ良いところで引っかかってます 👍
ここを理解すると Jupyter / ipynb が一気に使いやすくなります。
① Markdownセルとは何ですか?
一言で
👉 **「説明を書くためのセル」**です。
※ 実行はしません
何が書ける?
-
見出し
-
文章
-
箇条書き
-
数式(LaTeX)
-
説明コメント
例(Markdownセルの中身):
# AM変調の確認
このノートでは
1 MHz の搬送波を
1 kHz で AM 変調する
👇 表示結果(イメージ)
AM変調の確認
このノートでは
1 MHz の搬送波を
1 kHz で AM 変調する
どうやって作る?
VS Code では:
-
ipynb を開く
-
セル左の
+を押す -
「Markdown」 を選ぶ
(またはセル右上のCode→Markdown)
② Codeセルとは何ですか?
👉 Pythonコードを書くセルです。
-
Shift + Enterで実行 -
実行結果・グラフが 直下に表示
例(Codeセル):
import numpy as np
③ コピペの正しいやり方(重要)
❌ やってはいけない
-
.py のように 全部まとめて1セルに貼る
-
Markdownを Codeセルで実行する
⭕ 正しいやり方(おすすめ)
セルごとに分けてコピペします。
手順
-
新しいセルを追加
-
Codeセル or Markdownセルを選択
-
そのセル用のコードだけ貼る
-
Shift + Enter
④ さっき出した AM ノート構成の意味
| セル番号 | 種類 | 内容 |
|---|---|---|
| セル① | Markdown | タイトル・説明 |
| セル② | Code | import / %matplotlib |
| セル③ | Code | パラメータ設定 |
| セル④ | Code | 波形生成 |
| セル⑤ | Code | 時間波形 |
| セル⑥ | Code | FFT計算 |
| セル⑦ | Code | FFT表示 |
| セル⑧ | Code | 実験 |
| セル⑨ | Markdown | まとめ |
👉 教科書構造そのままです。
⑤ よくある混乱ポイント
Q. Codeセルを順番に実行しないとダメ?
👉 はい
-
上のセルで定義した変数を
-
下のセルで使う
からです。
Q. 実行順を間違えたら?
👉 全部実行すればOK
VS Code 上部:
「Run All」
⑥ .py と ipynb の最大の違い(超重要)
| .py | .ipynb |
|---|---|
コメントは # |
説明は Markdown |
| 一気に実行 | セル単位 |
| 結果は外 | 結果は下 |
まとめ
-
Markdownセル = 説明用
-
Codeセル = 実行用
-
セルごとにコピペして実行
-
上から順に Run
次は
👉 Markdownで数式を書く(AMの式をそのまま表示)
👉 Codeセルを1つ消すと何が起きるか(依存関係)
ここまで行くと「完全に理解した」になりますよ 😊
セルごとに分けてコピペして「すべて実行」を押しましたが動きません。
セルごとに▷Runしてみましたが動きませんでした。
ここまでちゃんと操作しているのに動かないなら、
原因はコードではなく「実行環境(カーネル)」です。
VS Code の ipynb で 一番ハマる王道パターンなので、落ち着いて一つずつ確認しましょう 👍
まず結論(いちばん多い原因)
👉 Python カーネルが選ばれていない/間違っている
コードが動かないとき、実は
Python 自体が一行も実行されていないことがよくあります。
① 右上を見てください(超重要)
.ipynb を開いた状態で、右上に:
-
Select Kernel -
または
Python 3.x.x
と書いてありませんか?
⭕ 正しい状態
Python 3.12.2 (venv)
など Python の名前が表示されている
❌ ダメな状態
-
Select Kernelのまま -
No kernel -
Python 以外(Julia / .NET)
② 正しいカーネルの選び方
-
右上の Select Kernel をクリック
-
Python Environments を選択
-
Python 3.x.xを選ぶ
(matplotlib を入れた Python)
👉 選んだ瞬間、ノートが「生き返る」ことが多いです。
③ エラーは出ていますか?(重要)
セルを Run したとき:
ケース①:何も表示されない
👉 ほぼ確実に カーネル未接続
ケース②:赤いエラーが出る
エラー文を そのまま全部 教えてください
(1行でも原因特定できます)
④ 最低限の動作確認(これだけ試してください)
新しい Codeセル を1つ作って、これだけ入れて Run👇
print(“hello”)
結果
-
何も出ない → ❌ カーネル問題
-
helloが出る → ⭕ Pythonは動いている
⑤ 次の確認(matplotlib が使えるか)
import matplotlib.pyplot as plt
print("ok")
❌ エラーなら:
ModuleNotFoundError: No module named 'matplotlib'
→ その Python に matplotlib が入っていません
⑥ VS Code でよくある落とし穴(重要)
-
.py では動く
-
ipynb では動かない
これは
👉 .py と ipynb が別の Python を使っている
という超定番事故です。
⑦ 一発で直す方法(おすすめ)
VS Code の下か右上で:
-
Python のバージョン表示をクリック
-
.py が動いた Python を選ぶ
-
ipynb を再度「すべて実行」
次にやってほしいこと(これだけ教えてください)
以下のどれかを教えてください👇
1️⃣ 右上に表示されている文字(そのまま)
2️⃣ print("hello") の結果
3️⃣ エラー文(赤文字)
ここまで分かれば、
次の1手で必ず動かします。
一緒に仕留めましょう 💪
print(“hello”)をRunしたら、次のメッセージが出ました
「Python3.13.7でセルを実行するにはipykernelパッケージが必要です」
コードは正しい/操作も正しい/足りないのは1つだけです。
結論
👉 ipykernel が入っていないため、ipynb を実行できない
VS Code のメッセージはこう言っています:
「Python 3.13.7 でセルを実行するには
ipykernel パッケージが必要です」
ipykernel とは?
一言でいうと:Jupyter Notebook と Python をつなぐ“エンジン”
-
.py→ 不要 -
.ipynb→ 必須
だから
-
コマンドプロンプト実行:OK
-
ipynb 実行:NG
という状態になっていました。
解決方法(いちばん簡単)
方法①:VS Code の案内に従う(おすすめ)
そのメッセージの中にInstall / インストールというボタン(またはリンク)があるはずです。
👉 それをクリックするだけ
数十秒〜1分で終わります。
方法②:手動でインストール(確実)
① コマンドプロンプトを開く
(.py を実行したのと同じ場所)
② 次を実行
python -m pip install ipykernel
※ Python 3.13.7 を使っているので python でOKです。
インストール後にやること(重要)
-
VS Code に戻る
-
ipynb を 閉じて開き直す
-
右上の Kernel を確認
→Python 3.13.7になっている -
print("hello")を Run
👉 hello が表示されれば成功
そのあと AM ノートを実行
-
「すべて実行」
-
もしくは 上から順に
Shift + Enter
今度は
-
波形グラフ
-
FFT スペクトル
が セルの下に表示されます。
まとめ
-
問題点:
ipykernel未インストール -
原因:ipynb 専用の実行エンジンが無かった
-
解決:
pip install ipykernel -
あなたの操作・理解は 全部合ってた 👍
インストール後、
-
何が表示されたか
-
まだエラーが出るか
をそのまま教えてください。
ここまで来たら、もうゴール直前です 😊
コードセルの下に以下の表示出たがどうすればいいか?
Python 3.13.7′ でセルを実行するには、 ipykernel パッケージが必要です。
‘ipykernel’ を Python 環境にインストールします。 コマンド: ‘c:/Users/DELL/AppData/Local/Programs/Python/Python313/python.exe -m pip install ipykernel -U –user –force-reinstall’
完璧です 👍
その表示は **「これから正しい処置をしますよ」**という案内で、エラーではありません。
そのメッセージの意味(安心してください)
表示されている内容は:Python 3.13.7 でセルを実行するためにipykernel を今からインストールします
そして下の行は
👉 VS Code が自動で実行するコマンドです。
c:/Users/DELL/.../Python313/python.exe -m pip install ipykernel -U --user --force-reinstall
✔ 正しい Python 3.13.7
✔ 正しいコマンド
✔ 問題なし
今やることはこれだけ 👇
① そのまま待つ
-
数十秒〜1分ほど
-
下に進捗ログが流れます
② 「完了」っぽい表示が出たら
例:
-
Successfully installed ipykernel ... -
何もエラーが出ない
👉 成功です
③ 超重要:そのあと必ずやること
-
ipynb を一度閉じる
-
もう一度開く
-
右上の Kernel 表示を確認
→Python 3.13.7になっている
④ 動作確認(まずこれ)
新しい Codeセルで:
print("hello")
👉 hello が表示されたら 100% OK
⑤ 次に AM ノートを実行
-
「すべて実行」
-
または 上から
Shift + Enter
今度は必ず:
-
📈 時間波形
-
📊 FFT スペクトル
が セルの下に表示されます。
もし次に起きうること(先回り)
Q. また同じメッセージが出る
👉 カーネル切り替えが反映されていない
→ ノート再オープンで解決
Q. matplotlib エラーが出る
👉 その Python に matplotlib が無い
→ その時点で一緒に直します(1行で済みます)
まとめ
-
その表示は 正常
-
すでに正しい方向に進んでいる
-
次は「hello が出るか」だけ確認
結果をそのまま教えてください。
出た文字を見れば、次の一手は一瞬で分かります 😊
hello が表示されました。あとRunしたのですがコードセル②の左下のマークがくるくる回っていて終わりません。
いいですね!🎉 hello が出た=環境は完全にOK です。
あとはその「②セルがくるくる止まらない」原因だけ潰しましょう。
その “くるくる” の正体
左下で回り続けるのは
👉 **「カーネルが処理中(=終わらない処理が走っている)」**状態です。
AM/FFTノートでよくある原因は、ほぼ次のどれかです。
原因①:無限に時間が進む計算(while / ループ系)
もし②セルにこんなのがあったら要注意👇
while True:
...
または
for i in range(10**9):
...
👉 終わりません
対処
-
上の ■(Interrupt)ボタンを押す
-
ループ回数を小さくする
-
whileを使わない
原因②:サンプリング数が異常に多い(FFTあるある)
例えば:
fs = 1_000_000_000 # ← これ、重すぎ
t = np.arange(0, 1, 1/fs)
👉 配列が 数億要素 になり、計算が終わりません。
安全な目安(AMデモ用)
fs = 1_000_000 # 1 MHz
t = np.arange(0, 0.01, 1/fs) # 10 ms
これなら一瞬で終わります。
原因③:plt.show() が無い(まれ)
Jupyterでは通常大丈夫ですが、まれに止まることがあります。
plt.plot(t, s)
plt.show() # ← 念のため入れる
原因④:②セルで FFT + プロットを一気にやっている
最初は セルを分けた方が安全です。
おすすめ構成
-
②セル:信号生成
-
③セル:FFT計算
-
④セル:プロット
まず今すぐやってほしいこと
-
⏹ Interrupt(■) を押す
-
②セルの中身をそのまま貼ってください
👉 見れば 「ここが原因」 をピンポイントで直します。
安心ポイント
-
Python / ipykernel / VSCode は全部成功
-
ここで詰まるのは Jupyter初心者あるある
-
あと一手で AM波形&FFTが綺麗に出ます 📈📊
②セル、待ってます 👍
インタラプトを押してもくるくる回りです。セルの中身 # 周波数設定 fc = 1_000_000 # 搬送波周波数 [Hz] (1 MHz) fm = 1_000 # 変調波周波数 [Hz] (1 kHz) # AMパラメータ mu = 0.5 # 変調度(0〜1) Ac = 1.0 # 搬送波振幅 # サンプリング fs = 20_000_000 # サンプリング周波数 [Hz] T = 2e-3 # 観測時間 [s](2 ms)
貼ってくれてありがとうございます。原因、ほぼ特定できました 👍
そしてこれは「コードのミス」ではなく Jupyterあるある+PC性能問題です。
結論(先に)
②セル自体は 止まる処理をまだ書いていないので、本来くるくるしません。
👉 つまり カーネルがすでにフリーズ状態になっています。
まず復旧 → そのあと設定を軽くします。
① まず “確実に” 復旧する手順(重要)
VS Code 上で:
-
右上の Kernel 表示をクリック
-
Restart Kernel(カーネルの再起動)
-
再起動後、②セルだけを ▷ Run
※ Interrupt が効かない時は、再起動しかありません。
② なぜフリーズしたか(原因)
この組み合わせです 👇
fs = 20_000_000 # 20 MHz
T = 2e-3 # 2 ms
サンプル数は:
20,000,000 × 0.002 = 40,000 点
👆 これ自体は 本来は大丈夫 ですが…
-
FFT
-
周波数軸作成
-
全帯域プロット(±10MHz)
を 同じセル or 直後に一気に実行すると
👉 VS Code + Python 3.13 + matplotlib が固まりやすいです。
③ 安全に動く “軽量版” 設定(まずこれで)
②セルはこう書き換えてください:
# 周波数設定
fc = 1_000_000 # 1 MHz
fm = 1_000 # 1 kHz# AMパラメータmu = 0.5
Ac = 1.0
# サンプリング(軽量)fs = 5_000_000 # 5 MHz ← 下げる
T = 1e-3 # 1 ms
👉 サンプル数:5,000 点
👉 ほぼ確実に一瞬で終わります
④ 次のセル(③)で時間軸とAM波生成
t = np.arange(0, T, 1/fs)
carrier = Ac * np.cos(2*np.pi*fc*t)
message = np.cos(2*np.pi*fm*t)
am = (1 + mu*message) * carrier
ここまでで くるくるしなければ成功。
⑤ それでも回る場合(最終手段)
-
VS Code を一度 完全に終了
-
再起動
-
ipynb を開く
-
②セルだけ実行
これで止まることはまずありません。
まとめ
-
問題は サンプリング設定 × Jupyter
-
コードは正しい
-
軽量化+Kernel再起動で解決
次は
👉 ③セルが止まらないか
👉 ④で波形が出るか
進んだところを教えてください。ここまで来たらゴール目前です 🚀
右上の Kernel 表示とはどこ?Python3.13.7のそばですか?
はい、その認識 ドンピシャで合っています 👍
Python 3.13.7 のそば、そこが「Kernel 表示」です。
VS Code の ipynb 画面での位置(超具体的)
.ipynb を開いていると、画面の 右上 にこんな表示があります:
Python 3.13.7 ▾
または
Python 3.13.7 (ipykernel) ▾
👆 これがカーネル表示です。
そこをクリックするとできること
その Python 3.13.7 を クリックするとメニューが出ます。
出てくる選択肢(例)
-
Restart Kernel(カーネルの再起動)
-
Interrupt Kernel
-
Select Kernel
👉 今回は
Restart Kernel(再起動) を選んでください。
もし見当たらない場合
パターン①
画面が狭いと右上に…(三点リーダー)
が出ていることがあります。
👉 それをクリック → Kernel 関連メニュー
パターン②
上部バーに
ノートブック ツールバー
が非表示になっている
👉 表示 → 外観 → ノートブック ツールバー を ON
再起動したらやること(重要)
-
②セルだけ ▷ Run
-
左下のくるくるが 一瞬で消えるか確認
-
問題なければ③セルへ
補足(安心材料)
-
Python 3.13.7 が表示されている=
ipykernel 正常 -
今起きているのは
「ノートが暴走中」なだけ
再起動したら、ほぼ確実にスッと直ります。
再起動できたか、②セルが止まったかだけ教えてください。
そこから一気に波形まで行きましょう 📈✨
メニュは出ずに、画面最上部の真ん中に検索窓のようなものが開きます。
OK、それ大事なヒントです 👍
今あなたが見ているその 「画面最上部・真ん中の検索窓みたいなもの」、正体は👇
👉 VS Code のコマンドパレット です。
つまり
場所は合っているけど、開き方が違っただけです。安心してください。
今の状態の整理
-
Python 3.13.7の表示を触った -
メニューではなく、上に入力欄が出た
→ コマンドパレット経由で操作するモードに入っています
これでも Kernel 再起動できます 👍
このまま Kernel を再起動する方法(確実)
その検索窓に、そのまま文字を打ってください👇
restart kernel
すると候補に:
-
Notebook: Restart Kernel
-
Jupyter: Restart Kernel
のような項目が出ます。
👉 Notebook: Restart Kernel を選択(Enter)
もし候補が英語で出ない場合
日本語UIなら、途中まででOK:
再起動
または
kernel
再起動できたかのサイン
-
左下のくるくるが止まる
-
セル番号が
In [ ]に戻る -
何も実行していない状態になる
再起動後にやること(超重要)
-
②セルだけ ▷ Run
-
2〜3秒で終わるか確認
-
終わったら③セルへ
それでも不安なら(最終手段)
-
VS Code を 完全に終了
-
再起動
-
ipynb を開く
-
何も実行せず②セルだけ Run
まとめ
-
その検索窓=正常(コマンドパレット)
-
そこから Kernel 再起動できる
-
今は「場所が分からない」だけで中身はOK
まず
👉 restart kernel
を打ってみてください。
結果、教えてもらえれば次は FFTが固まらない構成まで一気に行きます 💪📊
②セルはOK、次のセルでエラーが出ました。
いい進み方です 👍
②が OK になった=フリーズ問題は解決。あとはエラー内容を直すだけです。
まず確認したいこと(超重要)
エラー全文をそのまま貼ってください。
1行でも省略せずでお願いします。
例:
NameError: name 'np' is not defined
や
TypeError: ...
👉 エラーの種類で直し方が 100% 変わります。
ただし「よくある原因」はほぼこれ
③セルでこんなコードを実行していませんか?
t = np.arange(0, T, 1/fs)
もしエラーが:
NameError: name 'np' is not defined
👉 ①セル(import)が未実行です。
解決策
-
①セルを ▷ Run
-
そのあと ② → ③ の順で実行
Jupyter は
上から順番に実行されていることが前提です。
もう一つ多いパターン
NameError: name 'T' is not defined
👉 ②セルを実行し直してください。
まとめ(今の状態)
-
②セル OK 👍
-
次セルのエラー=変数 or import がまだ無い
-
ノートは「上から順に」が鉄則
次の一手
エラー全文を貼る
または
① → ② → ③ を順に Run して再確認
どちらでも OK です。
エラー文さえあれば 一撃で直します 🔧✨
NameError Traceback (most recent call last) Cell In[2], line 1 —-> 1 t = np.arange(0, T, 1/fs) 3 carrier = Ac * np.cos(2*np.pi*fc*t) 4 message = np.cos(2*np.pi*fm*t) NameError: name ‘np’ is not defined
ナイス、超きれいなエラーです 👍
原因も対処も 1秒で説明できます。
原因(もう分かってるかも) コードをRunしてなかった(^^;
NameError: name 'np' is not defined
👉 NumPy(np)がまだ読み込まれていません。
Jupyter Notebook では:
import したセルを実行していないと、存在しないのと同じ
になります。
解決方法(確実)
① 一番上のセル(import)を実行
たぶんこういうセルがあります👇
import numpy as np
import matplotlib.pyplot as plt
👉 このセルを ▷ Run
② そのあと順番に実行
-
① import セル
-
② パラメータ設定セル
-
③ このセル(t = np.arange …)
ワンポイント(超重要)
-
「②セルがOK」でも
①セルを実行していなければ np は未定義 -
Jupyter は ファイル全体を自動で読むわけではない
だから最初は必ず
👉 「すべて実行」 or 上から順に Run
確認テスト(安心用)
③セルの前に、1行だけ入れてもOK:
print(np.__version__)
これが出れば NumPy は生きてます。
次に起きること
このエラーを直すと:
-
③セル → OK
-
次のセルで 波形が表示
-
さらに FFT も表示 📈📊
ここまで来たら、もう完全に Jupyter 使いこなせてます。
まずは import セルを実行してから、もう一度 ③セルを Run してみてください。
③までOK、④でエラー
plt.figure(figsize=(8, 4)) plt.plot(t[:2000], s[:2000]) # 拡大表示 plt.xlabel(“Time [s]”) plt.ylabel(“Amplitude”) plt.title(“AM waveform (time domain)”) plt.grid() plt.show()
いいところまで来てます 👍
④セルのエラー、原因はほぼ確定です。
原因(コードを見ると一発)
④セルではこう書いていますよね👇
plt.plot(t[:2000], s[:2000])
でも③セルで作った信号は、おそらくこれ👇
am = (1 + mu*message) * carrier
👉 s という変数は一度も定義されていません。
そのためエラーになります。
正解の直し方(2択)
✅ 方法①:④セルを直す(おすすめ)
④セルをこう書き換えてください:
plt.figure(figsize=(8, 4))
plt.plot(t[:2000], am[:2000]) # ← s → am
plt.xlabel("Time [s]")
plt.ylabel("Amplitude")
plt.title("AM waveform (time domain)")
plt.grid()
plt.show()
✅ 方法②:③セルで変数名を合わせる
③セルをこうしてもOKです:
s = (1 + mu*message) * carrier
どちらでも動きますが、
am = AM信号 と分かるので 方法①がきれいです。
なぜこういうことが起きる?
Jupyterでは:
-
セルを分ける
-
途中で名前を変える
-
コピペで一部だけ変わる
👉 変数名ズレ問題が超よく起きます(初心者あるある)
次にやること
④セルを直して Run
→ AM の時間波形が表示されるはずです 📈
そのあと⑤セルで FFT に進めます。
結果どうなったか、教えてください!
④はOK、⑤でエラー
NameError Traceback (most recent call last) Cell In[8], line 1 —-> 1 S = np.fft.fft(s) 2 freq = np.fft.fftfreq(len(S), d=1/fs) 3 amp = np.abs(S) / len(S) NameError: name ‘s’ is not defined
来ました 👍
⑤のエラーも ④と同じ系統で、原因ははっきりしています。
エラーの正体
NameError: name 's' is not defined
👉 AM信号の変数名がズレています。
今の流れはこうでした👇
-
③セル:am = (1 + mu*message) * carrier
-
④セル:plt.plot(t[:2000], am[:2000])
-
⑤セル:np.fft.fft(s) # ← ここだけ s
👉 s は存在しません。
正解の修正(これでOK)
⑤セルをこう書き換えてください:
S = np.fft.fft(am)
freq = np.fft.fftfreq(len(S), d=1/fs)
amp = np.abs(S) / len(S)
FFT 表示セル(⑥セル・確認用)・・・あとは同じなのでOK
このあとに続けて:
plt.figure(figsize=(8, 4))
plt.plot(freq, amp)
plt.xlim(0, 2_000_000) # 0〜2MHzだけ表示
plt.xlabel("Frequency [Hz]")
plt.ylabel("Amplitude")
plt.title("AM spectrum (FFT)")
plt.grid()
plt.show()
ここで見えるはずのもの
-
1 MHz に大きなピーク(搬送波)
-
1 MHz ± 1 kHz に小さなピーク(側波帯)
👉 教科書どおりの AM スペクトルです 📊✨
まとめ(今日のハマりポイント)
-
エラーは全部 変数名の不一致
-
Jupyter は「上から順」「名前一致」が命
-
今は完全に正しい方向
⑤セルを直して Run → 結果を教えてください。
ピークが見えたら、次は 変調度 μ を変えてどう変わるかも遊べます 😄
セルを直して RunしてすべてOKになりました。解像度が下がったせいかスペクトルが細かく分離できてないようですが、後からいろいろ試してみます。VSCodeで初めてipynbを扱いましたが、使い慣れればかなり便利なものですね。ありがとうございました。
完走おめでとうございます!🎉
全部 OK まで持っていったのは本当に立派です。最初の ipynb でここまで行ける人、実は少ないです。
スペクトルが荒く見える理由(観察も正しい 👍)
おっしゃる通りで、原因は **解像度(周波数分解能)**です。
FFT の分解能はこれで決まります👇
Δf=T1
今回:
-
観測時間
T = 1 ms→ 分解能 1 kHz -
変調周波数
fm = 1 kHz
👉 ギリギリ同じ幅なので
側波帯(fc±fm)が「にじんで見える」状態です。
改善するなら
-
Tを長くする(最重要) -
fsはそこまで上げなくていい
例:
fs = 5_000_000
T = 10e-3 # 10 ms → 分解能 100 Hz
これで側波帯が シャープに分離します。
VS Code × ipynb の良さ(もう気づいてますね)
あなたが感じた通りです👇
-
🔁 セル単位で試行錯誤できる
-
📈 グラフがその場に出る
-
📝 Markdown で「実験ノート」になる
-
🧪 パラメータを変えて即再実行
特に
信号処理・数値計算・可視化
には最高の相性です。
今日つまずいたポイント=成長ポイント
実は今日のトラブルは、全員が通る道です。
-
ipykernel
-
Kernel 再起動
-
セル実行順
-
変数名ズレ
-
サンプリング設定
👉 これを一通り経験したので
もう「初心者ゾーン」は抜けています。
次に遊ぶと面白いネタ(おすすめ)
気が向いたらぜひ👇
-
μ を 0.1 / 1.0 / 1.5 にしてスペクトル比較
-
DSB-SC(搬送波なし)に変更
-
窓関数(Hanning)をかけて FFT 改善
-
FM 変調との比較
やりたくなったら、いつでも一緒にやりましょう 😊
こちらこそ、丁寧に進めてくれてありがとうございました。
**「使い慣れれば便利」**にちゃんと到達したのが最高です。
また続きをやりたくなったら、気軽に声かけてください


コメント