niszetの日記

細かい情報を載せていくブログ

Data Converters (Maloberti) を読み始める

年末にspringerがセールやっていたもので、pdf版を購入したのです。

教えてくれた後輩に感謝。
何冊か買ったのですが、そのうちの一冊、

www.springer.com

を読み進めます。AD/DAについての良書らしいので。

最近、和書よりも洋書の良書を買った方が良いことに気づきまして…。問題はちょっと高いということですが電子書籍はよくセールしているので問題はないな、と。

ただ、初めてその分野の本を読む場合は1冊目から英語で入るのは辛いと思うので、一番最初は母国語で書かれた本で読むべきと思います。

さて、この本はMATLABで書かれたコードがあるらしいのですが、探すのに手間取ったのでメモ。下記だと思います。

IMS

別の大学の講義のページから、リンクをたどって見つけた感じです。

MATLABのコードをRで動かすには…?ということも検討していたのですが、ちょっと何も考えずに移植することは難しそうです。
慣れていないうちはMATLABで実行する方が良いですね。買っておいてよかった。

niszet.hatenablog.com

Rへの移植を頑張る件についてはまた別の記事で書くかもしれません。

読んで、手を動かして、理解しよう。

頑張ろう。

(メモ) Markdown Preview Enhancedには課題も多そう…。

うーむ。

これの続きで色々とやっていました。メモ代わりに下記、書いておきます。

niszet.hatenablog.com

課題など

今日はmarkdownからwordのdocx形式に変換した際に、変換前後でどこがどのスタイルに対応するのかを調べていたのですが、そんな中見つけたtmori3y2さんの記事、

tmori3y2.hatenablog.com

によると、どうもVSCode対応するためにコードを書き直して色々とトラブルがあった模様。

実際、今週使った範囲で

  1. graphvizのブロックの後はwavedromやmermaidが表示できなくなる
  2. たまにwavedromの波形が表示できなくなる
  3. wordで吐いているはずなのに、pdf engineのオプションをつけてpandocを呼ぶせいでエラーとなる

などの問題がありました。RStudioにプレビュー機能があればそちらにコンセプトだけ移植する(コードは全部自分で書く…??)のもアリなんですが、うーん…。

というわけで、注意して使わないと行けなさそうというお話です。

markdownからdocxのスタイルの割り当て表みたいなものがあったらほしいんですが、どこかにないですかねぇ…。
生成結果から自分で表作って半分終わりましたが、ソース読んだ方が早いかもしれないですね。Haskell読めないけど。

アナログRF CMOS集積回路設計[応用編] 1章を読む (1回目)

読んだ記録をつける。

出来れば毎週1章ずつ進めたかったのですが、正直力不足で半月~1か月で1章ずつ読んでいこうかな、と思います。
ただ、一度に全部を更新するのは大変なのでまとめたところだけupしていく感じで。
まぁ「無理だ・・・!」ってなったら即撤収。

あと、そこまで深堀しませんし、内容については自分で確認する方が良いですよ、ということを先に書いておきますね。

ざっくりまとめる

1章は全体の概略…なのだがこの章だけでも結構情報量は多い。
結局、アナログはIF部のみは必ず最後まで残る(と思う)ので、アナログ界隈に最後に残される部分はココなのだ…と思っている。IO系やってた自分には僥倖と言わざるを得ない…

1.2

歪みとノイズについて、所望の信号以外はすべて妨害信号である。限られた信号帯域に信号を収めて側帯波は十分に抑圧する必要がある。

増幅器は入力・出力の周波数が同じ、ミキサは入力と出力の周波数が異なる

  • 増幅器の場合、
    • 相互変調歪
    • DC成分
    • 高調波の発生

*ミキサの場合、 * イメージ信号の発生

などが課題になる。

1.3.1

ftの計算。ここではチャネル長変調成分は考慮せず。入力信号Vsがgm倍された出力電流が出力極RL1*CGSに流れて発生する電圧との比なので、伝達関数G(s)は式の通りとなる

速度飽和がさらっとでてくる。上巻に出ているのかな(持ってない)

単位面積当たりのコストの上昇については、面積が半分になって値段が倍であればトントンだが、電源電圧の低下によるsignal powerがとりづらくなる問題、ドレイン抵抗の低下によるpowerの漏出が問題になりそうだな。

1.3.2

インダクタ。インダクタは面積をそれなりにとるために上記の「微細プロセスへ進めた際の面積当たりコストの影響」が大きい素子ではないかと。Cの場合は層間膜厚が薄くなるため単位面積あたり容量は大きくなるが、インダクタはその形状でほぼ決まるため。

また、微細プロセス化すると配線抵抗が増える方向なので必然的に高Qをとることが難しくなる(単位長辺りの配線抵抗が小さいメタル層を使うことでこの影響を小さくすることが出来るが)

式1.8は誤植。分子のRs2の2乗は不要。また、この式中のL_LはL_L'である

抵抗が小さいほど増幅率が大きい…?となるが、Rsが小さいということはQ値が大きいということでもあるし、単純にRs小→Rp大は対応関係からわかる気がするので、式中何を見ているのかは意識せよ。

とりあえず一旦ここまで。日曜に出そうと思っていたので大幅遅刻だわぁ…

TokyoR66の宿題の続き の続き

性懲りもなくもう少しやってみる

これの続きです。

niszet.hatenablog.com

こちらが届いたので早速読んでいたのですが、

時系列解析入門 - 岩波書店

1章の色々な時系列データを並べているところで、株価の時系列データが載っていました。そこには「株価データの解析は対数変換後、差分を取って行うことが多い」とありましたので、この間のデータに対してやってみようかなと思って実際にやってみた、というお話です。

やってみた。

library(changepoint)
data("HC1")

data <- HC1
data <- log(data)

data <- data[2:length(data)]-data[1:length(data)-1]

model <- cpt.meanvar(data, method= "PELT", test.stat="Normal")

これでいいのかなー。

結果は下記の通り。

cpts(model)
#> [1] 4771 4773
param.est(model)
#> $mean
#> [1]  1.087108e-05  3.130865e-02 -2.252765e-05
#> 
#> $variance
#> [1] 0.01166136 0.62392694 0.01228631
plot(model, cpt.width=3)

f:id:niszet:20180111224830p:plain

結果を見てみる。

途中に短い区間で変化点を見つけているのは以前と同じ。ただし場所が異なる。前回は7926 と 7928。

今回は図的にもここだけ確かに飛んでいるようには見える。ただし、やはりhistでプロットしてもdataは正規分布には見えない。ので、このあてはめも良くなさそう…。

とりあえず色々やってみましたが、現時点ではやはりまだ良く分からないな、ということで引き続き勉強していこうと思います。

Enjoy!!

(メモ) ドキュメント楽に作りたいのでMarkdown Preview Enhancedを使い始めた

Atom + Markdown Preview Enhanced で対応できることは対応する。

今までAtomMarkdownを書くときはMarkdown Preview Plusを使っていたのですが、Markdown Preview Enhancedというパッケージがあったのですね。

shd101wyy.github.io

VSCodeの方も試してみましたが、Atomの方が完成度が良い気がします。まぁ、どちらか普段使っている方を使えばよいのかなとは思いますが…。

正直このパッケージだけでやりたいことは大体できる。

もともと、個人的にはMarkdownは使っていたものの(使っているのは主にRmdな気もしますが…)、図表関係に難があって今まで使いきれていませんでした。
図は埋め込めば良いといえば良いのですが、その図をどうやって作るのか?というところで一旦エディタから離れたところで作業するというのが億劫で…

また、Markdown書式でモノを書くことを社内的に布教しようと2年ほど前からしていたのですが、未だ上手くはいっておらず。その原因はやはりエディタがないとテキストファイルだけ見ても名に書いてあるのか良く分からんし記法覚えるのは大変だし、そもそもgit使ってない時点でテキストで書くモチベーションあまりないし、社内文書はwordだし…etcetcみたいなところにあると思っています(IT系ならまぁ難なく、なのでしょうが、それ以外の環境で、プログラム経験全く内容な人を対象に布教するというのはなかなか大変なのです)

しかし、pandocを利用してwordで出力することが出来れば使う人も増えるのではないか、という期待をしています。
まぁ、仮にもし使われなくても自分はword直接触らなくてもコレを使えば良いので損はないし、ということで、ここ2日ほどこれと格闘していました。

実際、客(提案先)としては、中身がどうかは2の次で「使い勝手」や「価値あるか?」…で判断するということですね、何事も提案するときは考えなくてはね…

出来ることについては公式のページに書かれていますが、個人的には中でも以下の点に注目しています。

  • PlantUML の埋め込みが出来ること(フローチャートが描ける)
  • TeXを埋め込めること(CircuiTikZで回路図を入れることが出来る)
  • WaveDromを使えること

他にもコードチャンク埋め込んだり、importで別ファイル管理出来たり…という点も見逃せないですが。 一応、それぞれの項目に関連するリンクも貼っておきますね。

PlantUML

UMLをテキストで書くために作られた(らしい)言語。フローチャートをはじめとして、色々なものが描けます。
UMLはかじった程度にしか知らないのですが、シーケンス図は他部署とのやり取りについて時系列にまとめるときに重宝しました(本来の使い方とは違うのかもしれませんが、職場ではUML使わないですので…) plantuml.com

回路設計的には状態遷移図の方が重宝しますかね。アクティビティ図はそのままフローチャートですが、ちょっと見づらくなるんですよね…
同様な機能のmermaidでも良いので(こちらも同様にMPEで使用可能)、見やすい方で描くのかなぁ

CircuiTikZ

TeX/LaTeX で電気/電子回路の回路図を描くことができるパッケージ。 github.com

これもモチベーションとしてはそれなりに大きいです。RMarkdownの場合、html系とpdf系が別になっている(?)ためにこのパッケージを使えないでいました。
最悪、ここから図を作れさえすればあとは通常のMarkdownで良いわけですから、pdf2svgなどで図に変換出来れば…(回路図は大概別に描いてあるので、最悪これは使えなくても良いのですが...)

WaveDrom

ディジタルの波形や簡単な回路図を描くことができる。専用のエディタもあるが、Markdown Preview Enhancedでは.jsファイルを使用してMarkdownに埋め込んでいる WaveDrom - Digital timing diagram everywhere

これもかなり期待。こちらはjsなのでリアルタイムプレビューが可能です。

これ、昔(今も?)筑波大の武内先生が作られていたタイミングチャート清書サービスと同じような図が描けます。

ソフトウェア/タイミングチャート清書サービス - 武内@筑波大

と思ったら、WaveDromについて言及されていました(最近更新されたのかな…?)

必要なツール類などを揃える

自分が今やりたいことはほとんどできそうです。ただ、現時点で色々と課題があるため今後の記録のために書いておきます。

なお、このパッケージは機能の多さもすごいですが、更新頻度も多いため、ネット上にある情報があっという間に古くなる可能性が大です
検索等でこのページにたどり着いてしまった方は現状については公式のページから情報を得るようにしてみてください。

私の作業環境・バージョン (主なものだけ)

win10 64bit + ATOM Version 1.23.2 (記事執筆時点最新)
Markdown Preview Enhanced 0.15.2(同上)
pandoc 2.1
Microsoft Word 2016

pandocについて

先日、pandoc 2.1がリリースされました。このパッケージを使う分では私が2日試した範囲では特にpandocに起因した問題は起きていません。
逆に1.Xでは動作しませんでしたので、pandoc 2.1をインストールしてください。

github.com

なお、Markdown Preview Enhanced ではpandocのpathを個別に指定することも可能です(ATOMのパッケージ->設定から、真ん中付近のPandoc Options: Pathで指定。日本語化していない時はPackage -> Settings、 かな?)

必要となる環境が色々ある。

さて、最終的にwordに出力するだけであれば上記環境だけで事足りるはずですが図はまた別に色々と環境整備が必要です。
下記それぞれPathを通しておく必要がありますね。

Graphviz

pumlの図を入れる場合には追加で下記が必要です。
特に考えずに最新のものを使用しましょう。
Graphviz - Graph Visualization Software

ImageMagick

こちらも図をexportするために必要。こちらも黙って最新版を使いましょう。
www.imagemagick.org

pdf2svg

CircuiTikZなどのLaTeXの記述をPreview機能使って表示させるために必要。

こちらの記事を参考にさせていただきました。

scientre.hateblo.jp

LaTeX環境

また、CircuiTikZの使用にはTeX/LaTeX環境が必要となります。PandocではMiTexの方をおススメって書いてあった気がするんですが、W32TeXで良いはずですが、2つのPCに入れて片方動かないという状態で、ちょっとまだ良く分かってませんが…。

https://miktex.org/

ちょっとTeXまわりは個人的に闇しか感じないので、TeXまわりはまた別に記事にします。
なお、MikTex 2.9+ win10はパッケージの追加がうまくできなくなるというバグらしい挙動があるようです(同じような報告が結構出ている…)
…ということもあり、後回しです。

参考

Markdown Preview Enhanced の導入にあたって下記の記事を参考にしました。ありがとうございました。 正直、今日書いたここまでの情報は目新しいことは何もないので下記の記事の方がわかりやすくて良いかと思います。

しかし日本語で情報がまとまっているのはありがたいですね。

qiita.com

qiita.com

qiita.com

ただ、最新の情報をチェックする必要があるので、最終的には公式の情報を見に行く必要はあるのですが。

まだまだ続きがある

前置きを書くだけで時間を使ってしまって、昨日今日で進めた事・ぶつかった問題について全然触れられませんでした。
とりあえずこれで環境が整ったという前提で、次回はmarkdownからpandocを使用してdocxを生成する際に詰まったことを簡単にまとめます。

既知の情報しか書いてないな…

Enjoy!!

追記

この記事をメンテしたい気持ちはあるものの、はてなブログは記事メンテするにはちょっと向いていないですね…。

一応、このあたりも含めてR MarkdownからWord文書を作るという内容で技術書典向けに書いたのですが、中身は実質Pandoc本ではあるので参考になるかもしれません。ということで宣伝も兼ねてリンクを貼っておきます。

niszetkoubou.booth.pm

RにMATLAB/Ocatveのコードを移植して試してみるために

RにはOctave/MATLABのコードを扱おうとしているパッケージがいくつかあります。

私自身はMATLAB持っているので、自分的にはあまり意味がないという気もしますが…

niszet.hatenablog.com

RでMATLAB/Octaveのコードを試せると良いですよね。
と、いうことでRでMATLABのコードを移植するために必要なパッケージを探してみました。

MATLABが手元にない場合はOctaveが選択肢に上がると思います。しかしOctaveは起動時に「windows10については試験中」という表示が出ます。多分動いているので問題はないとは思うのですが。

…だもんで、人に勧めるときに自信をもって勧めることができない(win使うなって言われても仕事で使いますからねぇ…)

それ、Rでやりましょう

sosパッケージでMATLABとかOctaveで検索すると結構ヒットします。今後ちょっと使っていこうかなというパッケージを(自分のために)まとめておきました。

なお、関数名の衝突が怖いので自分はlibraryで読ませずに全てパッケージ名::関数名で使おうと思っています(=まだちゃんと使えていません)

pracma

MATLAB/Octaveの関数名と互換があるように書かれたパッケージ。
後述のcontrolパッケージはこのパッケージに依存しています。

CRAN - Package pracma

iemisc

こちらもMATLAB/Octaveの関数名とコンパチになるようなパッケージ。

CRAN - Package iemisc

ただ、Suggestsに入っているRcppOctaveパッケージがCRANから消えているので、pracmaの方が良いのかな。自身の更新も2016年で止まっているようですし、説明もmiscパッケージということなのであまり積極的な更新はないかもしれませんねぇ…。とりあえずpracmaの方使おう。

signal

Octave の Signal パッケージ(Signal Processing Tool Kit)相当のパッケージ tuneRなどとあわせて使うことになりそうです。

CRAN - Package signal

control

Octave の Control (MATLABのControl System Toolbox)に相当するパッケージ。

CRAN - Package control

controlパッケージについては以前ちょっとだけ書きました。 niszet.hatenablog.com

その他

ちなみに、他にもMATLABに関係しそうなパッケージはいくつかあります(sosパッケージで見つけたもの)

また、これ以外にも信号系のパッケージ(tuneRとかね)はいくつかあるのでそれはまた気が向いたときに。

stem関数

MATLABのstem関数は下記の記事を参考にすると良いです。離散のデータをプロットした時のあの〇と棒での表示は見やすいですよね。

上記パッケージ群とこのfunctionを使えばplotまわりもほとんど考えずに移植が可能かもしれません。 www.r-bloggers.com

さぁこれで、Rだから信号処理できないとか言えなくなりましたね!(私が)

controlパッケージのお陰てState Spaceが扱える(ただし推定は??)ので、伝達関数以外も扱えるのがうれしい。R布教活動にも使えそうです。

Enjoy!!

タブレットを新調した

色々出来てないけど…

数年間使っていてそろそろ買い替える…と思って1年くらいたってしまったのですが、この年始に買い替えてみました。Huawei の MediaPad M3 Lite 8というやつです。

画面綺麗だなぁ…。

Nexus7よりちょっと大きいので慣れるまでに少しかかるかも。
あと、あまり使いこなしていなかったので未だに全然使い方がわからないんですよね…。移行せずに新規に立ち上げてしまったが…どうすっかな…。

slackとdiscordも入れたので今後は出先でもアクティブに使えそう(使うのか?)

あ、特にオチとか(写真すら)ないです…。以上です。