OpenNH

日常のひとこま(自分用のメモとかあれこれ)

よく使うかもしれない線形代数まとめ

はじめに

線形代数学、それは大学で勉強はいろいろしてきましたが講義聞いてるだけでは何につかうの?って感じで全く頭に入っていなかったものです。ですが、研究をするようになって線形代数学の重要性を身にしてみ感じるようになりましたね。ほんとに単純な計算で躓いてしまうと開発速度が遅くなって仕方ないですよね…...。式が解ければ制御できるのに解き方がわからん!ってなって式を解くのに何時間もかけるのはもったいなく感じます。

なので、少しでも時間の節約になればと思い線形代数の計算式をメモ書き程度に載せておきます(あくまで自分用)。

まだ全然項目がありませんが、時間あるときに随時載せていく予定です。
 
 

ヤコビ行列(ヤコビアン

ヤコビ行列(Jacobian matrix)って、要はベクトルをベクトルで微分したものですね。
ベクトル値関数
 f(x) = [ f_1(x), f_2(x), . . . , f_m(x) ]^T
をベクトル
 x = [ x_1, x_2, . . . , x_n ]^T
微分すると、
\[ \frac{\partial f(x)}{\partial x} =
\left[ \begin{array} {rrr}
\frac{\partial f_1}{\partial x_1} & \ldots & \frac{\partial f_1}{\partial x_n} \\
\vdots & \ddots & \vdots \\
\frac{\partial f_m}{\partial x_1} & \ldots & \frac{\partial f_m}{\partial x_n}
\end{array} \right]
\]
となります。これが f xに関するヤコビ行列(ヤコビアン)です。


<例題>
ベクトル値関数 fとベクトル xが以下のように与えられた場合のヤコビ行列は?
\[ f(x) = \left[
\begin{array}{c}
x_1 \\
x_1^2+x_2 \\
x_1^3+x_2^2+x_3 \\
x_1^4+x_2^3+x_3^2+x_4
\end{array}
\right]
~~~~~~~
x = \left[
\begin{array}{c}
x_1 \\
x_2 \\
x_3 \\
x_4
\end{array}
\right]
\]
このときのヤコビ行列は以下のようになります。
\[ \frac{\partial f(x)}{\partial x} =
\left[ \begin{array} {rrrr}
1 & 0 & 0 & 0 \\
2x_1 & 1 & 0 & 0 \\
3x_2 & 2x_2 & 1 & 0 \\
4x_3 & 3x_3 & 2x_3 & 1
\end{array} \right]
\]


ヘッセ行列

ヘッセ行列(Hessian matrix)は、スカラ値関数をベクトルで二階微分したものですね。
ヘッセ行列を考えるにはまず勾配ベクトルを考えるとわかりやすいです。

スカラ値関数 f(x)をベクトル x = [ x_1, x_2, . . . , x_n ]^T 微分すると、
\[ \frac{\partial f(x)}{\partial x} = \left[ \frac{\partial f}{\partial x_1}, \ldots, \frac{\partial f}{\partial x_n} \right]^T \]
となります。これが、 f xに関する勾配ベクトルです。
(ただし、上式は物理学で用いられる勾配ベクトル \nabla fを表しています。)

それで、ヘッセ行列とは勾配ベクトルをさらにベクトル x微分したものなので、
\[ \frac{\partial^2 f(x)}{\partial x^2} =
\left[ \begin{array} {rrr}
\frac{\partial^2 f}{\partial x_1 \partial x_1} & \ldots & \frac{\partial^2 f}{\partial x_1 \partial x_n} \\
\vdots & \ddots & \vdots \\
\frac{\partial^2 f}{\partial x_n \partial x_1} & \ldots & \frac{\partial^2 f}{\partial x_n \partial x_n}
\end{array} \right]
\]
となります。ベクトルをベクトルで微分するのは上述したヤコビ行列の導出でやっているので同様にして解けます。
 
 
 
参考となる資料:

非線形最適制御入門 (システム制御工学シリーズ)

非線形最適制御入門 (システム制御工学シリーズ)

 
 

平均二乗誤差(MSE)

ある値cに対する,データ配列x_iの差分の平方の平均値を平均二乗誤差(MSE:Mean Squared Error)といい、以下の式で表す.
\[ MSE(c) = \frac{1}{n} \sum_{i=1}^n(x_i-c)^2 \]

なお、上式MSE(c)の平方根を平均二乗誤差平方根(RMSE : Root Mean Squared Error)と言い,以下の式で表す。
\[ RMSE(c) = \sqrt{\frac{1}{n} \sum_{i=1}^n(x_i-c)^2} \]

MATLABで音源を利用してみる

MATLABに任意の音源ファイルを読み込んで再生したいなんて時のメモです。

コードはこんな感じで書けばオッケーです!

% 音源ファイルの読み込みと再生
Volume = 0.1;                                 % 音量調整(オリジナル音源振幅に対する倍率)
[y,Fs] = audioread('<ファイル名>. <拡張子>');  % 読み込み
player = audioplayer(y*Volume,Fs);            % 再生オブジェクトの生成
play(player);   % 再生(これだけだと最初から最後まで再生され途中で終了できません)
pause(5);       % 5秒再生
pause(player);  % 一時停止
pause(2);       % 2秒停止
resume(player); % 一時停止した時点から再生を開始
pause(5);       % 5秒再生
stop(player);   % 再生の停止

ちなみに、
サポートしているファイル形式はここに載っています。
オーディオ ファイルの読み取り - MATLAB audioread - MathWorks 日本

VisualC++でOpenMPを使ってみる


OpenMP

OpenMPとはマルチコアCPUによるメモリ共有型の並列化を簡単に実装できる並列化技術です。

目次

  • 目次
  • 開発環境
  • 初めてのOpenMP
  • 並列化数を指定
  • forループを並列化
  • セクションで並列化
  • OpenMPとマルチスレッドの記述比較
  • まとめ

開発環境

Visual Studio 2015 c++
Windows 10 Home
Intel Core i7-6700K

初めてのOpenMP

まず最初に新規プロジェクトで空のアプリケーションを作って、以下のソースを実行してみましょう。
この例では、OpenMPの実行時ライブラリを使用しないので、インクルードする必要はありませんが、後々使うので一応インクルードしています。

#include <omp.h>
#include <stdio.h>

int main()
{
#pragma omp parallel
	printf("Hello OpenMP!\n");

	return 0;
}
続きを読む

動画編集ソフトはVideoPadがオススメ!

旅行の思い出を編集して動画にしようと思い動画編集ソフトを調べてみました。でも、お金はかけたくないので、フリーソフトでいいのがないものか…

 

欲しい機能の条件

・ユーザーフレンドリーで使いやすい!

・BGMを自由に入れられる!

・画像を動画に差し込める!

・映像の切り替えが滑らか!

・エフェクトのパターンが豊富!

ドラッグ&ドロップで編集可能!

 

できれば欲しい機能

・動画内に一部画像を埋め込む

・BGMに効果音を追加できる

・逆再生や画像加工が可能

 

以上の条件のもといろいろと探してみましたが、フリーのソフトでは、VideoPadが一番優秀かなと感じました!

↓↓ダウンロードリンク

動画編集ソフトVideoPadを無料でダウンロード。本格的なビデオ作品が簡単に作れる、おすすめ無料動画編集ソフトです。

 

↓↓VideoPadの使い方

VideoPad動画編集ソフト -基本的な使い方の動画チュートリアル

 

 

 

文献リスト

ROS

1. "ROS2ではじめよう 次世代ロボットプログラミング"

 著者:近藤豊

 発売:2019.08.13

 概要:ROS1に関して基本的な部分の紹介がまず載っており、ROS2に関する基礎から応用までが紹介されています。

ROS2ではじめよう 次世代ロボットプログラミング

ROS2ではじめよう 次世代ロボットプログラミング

 

 

 

 アクティブサスペンション

  1. "セミアクティブサスペンションにおける実用的な状態推定の検討"
     著者:山本 彰人,田中 亘,槇野 貴文,田中 俊也,田原 憲,八尋 嵩司
    発表年:2017
    ・減衰力のヒステリシスを考慮したサスペンションストローク速度推定手法の提案。
    ・シミュレーションおよび実車両による評価結果が記載されている。
    [PDF]

  2. "Vehicle Dynamics and Control"
     著者:Rajesh Rajamani
    発表年:2011
    ・基礎的な部分が詳しく、わかりやすく説明されている。
    ・最適制御アルゴリズムがわかりやすい。
    [PDF] [Amazon]

     

    Vehicle Dynamics and Control (Mechanical Engineering Series)

    Vehicle Dynamics and Control (Mechanical Engineering Series)

     

     



  3. "A new adaptive sky-hook control of vehicle"
     著者:K Yi,B.S. Song
    発表年:1999
    ・ばね上速度およびばね下速度を用いたフィードバック制御則(’new adaptive’ sky-hook damping algorithm)を提案。
    ・路面変位検出手法(RDA : Road Detection Algorithm)を提案。
    ・フィードバックゲインはRDAにより動的に可変される。
    [PDF]

  4. "ON-IMPROVING-THE-PERFORMANCE-OF-AUTOMOTIVE-SEMI-ACTIVE"
     著者:T.J.Gordon,R.S.Sharp
    発表年:1998
    ・プレビュー制御の有用性の検証。
    非線形減衰特性(F-V Map)が参考になる。
    [PDF]

  5. "The design of semi-active suspension for automotive vehicles"
    著者:TETSURO Butsuen
    発表年:1989
    セミアクティブサスペンションの最適制御設計について詳しく載っている。
    ・非常にわかりやすい。
    [PDF]

  6. "Using the lead vehicle as preview sensor in convoy vehicle active suspension control"
    著者:Mustafizur Rahman,Geoff Rideout
    掲載:Vehicle System Dynamics
               Vol. 50, No. 12 (2012), pp. 1923-1948.
    発表年:2012
    ・アクティブサスペンションのプレビュー最適制御設計について
    ・カルマンフィルタを用いたオブザーバ設計による路面変位推定
    [Areticle] [PDF]
    関連:

    http://www.engr.mun.ca/ACC2010_Adibiasl_Rideout_378Header.pdf

  7. "Optimal Linear Preview Control of Active Vehicle Suspension"
    著者:Aleksander HAC
    掲載:Vehicle System Dynamics
               Veh. Sysyt. Dyn. 21 (1992), pp. 167-195.
    発表年:1992
    ・アクティブサスペンションのプレビュー最適制御設計について
    [T&F Online] [IEEE]

NAS : LinkStationへの一括アップロード方法

目次

 

はじめに

 BUFFALOのLinkStation(NAS)の設定になど関するメモです。

 筆者の自宅ではこちらのNASを使用しています。

環境

OS    :  Windows 10 Home 64bit

 NAS :  LS220d (BUFFALO)

 

 

LinkStationへの一括アップロード方法

自宅のBUFFALO LinkStationへ外部のパソコンからドラッグ&ドロップでファイルの移動がしたい!

でも、ブラウザ上のhttp://buffalonas/からアクセスするとファイル1つずつしかアップロードできない…なぜだ。と、不便を感じたので方法がないか調べてみました。

 

・解決方法

簡単!パソコン用のWebAccessソフトが存在しました。なぜすぐに気が付かなかった…

http://faq.buffalo.jp/app/answers/detail/a_id/13924

上記リンクから、BUFFALO WebAccess (Windowsパソコン用)をダウンロードします。

(ダウンロード【リンク】)

ダウンロードページ最下部の「ダウンロードソフトウェア使用許諾契約」に同意してダウンロードする”をクリックするとインストーラがダウンロードされます。

 

後は、上記リンクの手順に従えばOK!

 

うん。非常に簡単にできました。

 

LinkStationに接続できなくなった時

下記のリンクで説明されているように設定したらアクセスできるようになりました。

Windows 10 April 2018 Update を適用したらNAS機能が使用できなくなりました - アンサー詳細 | BUFFALO バッファロー

 

上記方法でだめな場合、下記のリンクの方法でアクセスできるようになるかもしれません。

dekiru.net

 

 Webアクセス機能の設定

公式サイトの使用手順リンク

http://buffalo.jp/support_s/guide2/manual/webaccess/site/ja/pc_index.html?Chapter1#h2anc0

 

 メールの通知設定

毎日HDDの状況などを知らせてくれる機能の設定です。

【動画Q&A】LinkStation メール通知の設定方法(Gmail編) - アンサー詳細 | BUFFALO バッファロー

 Gmailに通知を送る場合の設定になります。

SMTPサーバーアドレス:smtp.gmail.com

SMTPポート番号:465

f:id:FounderLeis:20181117153400p:plain

 

Gmailのセキュリティにひっかかってしまうので「安全性の低いアプリを許可」を設定します。

Gmailで安全性の低いアプリを許可する