gnuplotによるグラフ作成24~プロット座標系の変更
今回はxy直交座標系と異なる極座標、円筒座標、球座標系でプロットする方法について紹介する。
1. 極座標系
前回までにパラメトリックプロットを紹介したが、今回は極座標系で具体的にはr=f(θ)と表せるような関数をプロットする。
極座標系を使用するには以下のようにset polar
とすると変数t (θに相当)が設定される。
set polar >dummy variable is t for curves
例えばカージオイド曲線 をプロットするには
plot 1+cos(t)
少し書式(レンジ・アスペクト比)を整える必要はあるが、極座標プロットはできている。
2. 円筒座標系/球座標系
3次元での円筒座標系を扱うこともできる。まずset mapping cylidrical
とすることで3次元空間を円筒座標系として取り扱う。さらに角度パラメータφを扱うためset parametric
としてパラメトリックモードにする。円筒を描画するには
をプロットする。
set mapping cylidrical set parametric set isosamples 40 splot cos(u),sin(u),v
以下のように円筒座標系でプロットすることができる。φはu, zはvに対応している。
円筒座標系と同じ要領で球座標系でプロットする。set mapping spherical
とすることで3次元空間を球座標系にして、set parametric
としてパラメトリックモードにする。
球座標系で球を描画するには
set mapping spherical set parametric set isosamples 40 splot cos(u)*cos(v),cos(u)*sin(v),sin(u)
以下のように円筒座標系でプロットすることができる。θはu,φはvに対応している。
xyzのスケールが等しくないため、球がつぶれてみえてしまう。そこでset view equal xyz
でxyzのアスペクト比を等しくし、さらにxy面と球の下端が揃うようにset ticslevel 0
とする。
set view equal xyz set ticslevel 0
以下のように球を正しく描画することができる。
3. まとめ
今回はgnupotを用いて極座標、円筒座標、球座標系でプロットする方法を紹介した。
TinkercadによるArduinoシミュレーション44 ~ ゼロクロス検出回路2
前回紹介したゼロクロス検出回路の別の方式として、今回はフォトカプラを用いたゼロクロス検出回路とTinkercadによるシミュレーションについて紹介したい 。
1. フォトカプラ―とは
フォトカプラ―(オプトカプラ―)は下の図のように発光素子(LED)と受光素子(フォトトランジスタ)で構成され、電気的に絶縁した状態で入力信号を出力側に伝達する素子である。入力側がON(ある程度の電圧がかかっている)のときLEDが発光し受光側のフォトトランジスタは導通状態になり、またOFFのときはLEDは発光しないので受光側のフォトトランジスタは不通状態になる。電気的に絶縁されているため、入力側の電気ノイズの影響が受けにくいことや機械式スイッチよりは耐久性があり、寿命が長いという特徴がある。
2. フォトカプラを用いたゼロクロス検出回路
Tinkercadではオプトカプラのモデルとして4N35が利用可能で、実際のデータシートはhttps://docs.rs-online.com/25c0/0900766b80dca9c8.pdfなどを参照。フォトカプラはLEDを用いるため接続したアノード・カソード電圧が逆にならないように、あらかじめダイオードなどで整流する必要がある。今回は交流電圧をブリッジダイオードで全波整流したものをフォトカプラのアノード、カソード部に接続している。(下図参照)。入力の交流電圧が全波整流され、順方向電圧以下ではLEDが発光せずフォトトランジスタは不通となり、Vcc電圧がそのまま出力され、LEDが発光している状態ではフォトトランジスタは導通し、Vcc電圧は降下する。
3. ゼロクロス検出回路のシミュレーション
以下上の回路図をTinkercad上でモデルにしたものを示す。Vccは直流電源で+4Vを供給する。交流電圧はファンクションジェネレータで発生させて50Hzの正弦波を振幅10V(±5V)を入力する。交流電圧を全波整流されたフォトカプラへの入力波形とフォトカプラの出力波形をオシロスコープでモニタできるようにしている。
ゼロクロス検出回路のシミュレーション実行例を下に示す。出力波形がピークの位置が0クロス(全波整流波形の0V付近)と考えられるが、波形がなまっていて0クロスの位置に不確かさがある。Tinkercadのファンクションジェネレータの設定上正弦波の場合±5Vまでしか印加できない関係で、LEDの一般的な順方向電圧2Vと比較して十分大きくないということが原因の一つと考えらえる。
4. まとめ
今回はゼロクロス検出回路の別の方式として、今回はフォトカプラを用いたゼロクロス検出回路とTinkercadによるシミュレーションについて紹介した。
Texによる文書作成6 ~ 表の作成
今回はLaTeX文書の作成方法として文中に表を作成する方法について紹介したい。
1. 表の作成方法
文中に表を作成するにはtable環境内に\begin{tabular}~\end{tabular}
としてセルの中身や罫線を設定していく。
4行4列の表を作成するにはbegin{tabular}{lcrc}
などとする。{lcrc}
は列数とセルごとに左寄せl,中央寄せc, 右寄せrを設定しており、1列目は左、2列目は中央、3列目は右、4列目は中央寄せに設定している。
セルの中身を記述し、&
で列を区切り、\\
で改行する。罫線を設定しない一番単純な表のLaTeXコマンドは以下のようになる。
\begin{table}[htb] \centering \caption{スペック比較:罫線なし} \begin{tabular}{lcrc} 機種 & ディスプレイ & 値段 & CPUコア \\ iphone12 pro & 6.1" & 106,800円 & A14 Bionic \\ iphone12 & 6.1" & 85,800円 & A14 Bionic \\ iphone12 mini & 5.4" & 74,800円 & A14 Bionic \end{tabular} \end{table}
なお[htb]
は図の挿入と同様に表の挿入位置を指定し、\centering
は表をページ中央に配置、\caption
は表のキャプションを指定している。
上のLaTeXコードを実行すると以下の表が得られる。
2. 表の罫線作成方法
次に表に罫線を入れる方法について紹介する。縦の罫線については\begin{taular}{|l||c|r|c|}
とすればよい。1本の罫線は|
,2重罫線は||
として指定する。
次に横の罫線は改行のコマンド\\
の後に\hline
を入れる。2重罫線の場合は\hline \hline
とする。
\begin{table}[htb] \centering \caption{スペック比較:罫線あり} \begin{tabular}{|l||c|r|c|} \hline 機種 & ディスプレイ & 値段 & CPUコア \\ \hline \hline iphone12 pro & 6.1" & 106,800円 & A14 Bionic \\ \hline iphone12 & 6.1" & 85,800円 & A14 Bionic \\ \hline iphone12 mini & 5.4" & 74,800円 & A14 Bionic \\ \hline \end{tabular} \end{table}
上のLaTeXコードを実行すると以下の表が得られる。
2. セルの垂直結合
次はセル同士を結合する方法について示す。ここでは罫線を引くか引かないかという形でセルを結合する。まず垂直方向にセルを結合するために罫線を引く場所を制御する。
そのために\hline
の代わりにcline{開始セル番号-終了セル番号}
を用いると開始から終了までのセルに罫線が引かれて、それ以外は引かれない。また1セルだけ罫線を引く場合は開始と終了を同じセル番号のすればよい。
以下はCPUコアのA14 Bionicは共通なので4列目は罫線を引かない。(これだけだと各行に\cline{1-3}
のみ記載すればよい)またディスプレイの6.1"は共通なので2行目の設定は1列目と3列目だけ罫線を引くために\cline{1-1} \cline{3-3}
とする。全体的には以下のようなLaTeXコードになる。
\begin{table}[htb] \centering \caption{スペック比較:セル垂直結合} \begin{tabular}{|l||c|r|c|} \hline 機種 & ディスプレイ & 値段 & CPUコア \\ \hline \hline iphone12 pro & 6.1" & 106,800円 &\\ \cline{1-1} \cline{3-3} iphone12 & & 85,800円 & A14 Bionic \\ \cline{1-3} iphone12 mini & 5.4" & 74,800円 & \\ \hline \end{tabular} \end{table}
3. セルの水平結合
今度はセルを水平方向に結合する方法を示す。水平方向に結合したセルを定義するには\multicolumn{結合数}{書式}{セルの中身}
を使用する。書式は例えば|c|
のように左・中央・右寄せの指定と罫線|を指定する。
以下の表はバージョンという列を増やして5列4行の表にして、3行目の1列目と2列目だけを水平結合したセルにするLaTeXコードを示す。
\begin{table}[htb] \centering \caption{スペック比較:セル水平垂直結合} \begin{tabular}{|l|c|c|r|c|} \hline 機種 & バージョン &ディスプレイ & 値段 & CPUコア \\ \hline \hline iphone12 & pro & 6.1" & 106,800円 &\\ \cline{1-2} \cline{4-4} \multicolumn{2}{|c|}{iphone12} & & 85,800円 & A14 Bionic \\ \cline{1-4} iphone12 & mini & 5.4" & 74,800円 & \\ \hline \end{tabular} \end{table}
4. multirowパッケージの利用
罫線の設定で垂直にセルを結合すると、ディスプレイ 6.1"が結合数が偶数だとどうしても上寄りか下寄りになってしまい見栄えが悪い。そこでmultirowパッケージを利用してmultirow
コマンドを用いてセルを垂直に結合する。ちなみにmulticolumnはデフォルトで使えるコマンドなので特にパッケージの指定は必要ない。multirowコマンドを利用するにはまず、プリアンブル領域で\usepackage{multirow}
とする。multirow
はmulticolumn
とほぼ同様の使い勝手でmultirow{結合数}{書式}{セルの中身}
という形で使用する。なお書式はコンパイラによる自動設定を利用した方がエラーになることが少なく{*}
を指定する。
以下はディスプレイ6.1"のセルに対してmultirowコマンドでセルを垂直結合したLaTeXコードを示す。
\begin{table}[htb] \centering \caption{スペック比較:セル水平垂直結合(multirow)} \begin{tabular}{|l|c|c|r|c|} \hline 機種 & バージョン &ディスプレイ & 値段 & CPUコア \\ \hline \hline iphone12 & pro & \multirow{2}{*}{6.1"} & 106,800円 &\\ \cline{1-2} \cline{4-4} \multicolumn{2}{|c|}{iphone12} & & 85,800円 & A14 Bionic \\ \cline{1-4} iphone12 & mini & 5.4" & 74,800円 & \\ \hline \end{tabular} \end{table}
ディスプレイの6.1"が縦方向中央に表示されており、2行の結合でもより自然に表示できている。
5. その他表の挿入方法
上で紹介したようにセル数が少ない場合はよいが、セル数が増えてくるとLaTeXコードで記述しようとするとかなり面倒になる。さらにセルの結合が入ると何列目に罫線を引くとか、multirowやmulticolumnをどこに入れるかなど複雑になってくる。そこで1つの方法としてはエクセルなどで表を作成して、図としてLaTeX文書内に挿入するという手がある。ただしセル内を修正する場合、エクセルの修正→画像ファイルという手順を踏まないといけない。
他の方法としては、(個人的には利用していないが) ExcelからLaTeXコードに変換するツールがある。いろいろなツールがあるが、セル結合まで対応しているものとしてExcel2latexというものもある。
Excel2LaTeXの詳細情報 : Vector ソフトを探す!
6. まとめ
今回はLaTeX上で表を作成する方法やセル結合の方法について紹介した。