2011|08|
2013|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|05|06|07|08|09|10|11|12|
2016|01|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|

2016-10-05 FreeMindで分からなくなったらここを開け [長年日記]

_ http://freemind007.web.fc2.com/


2016-10-06 「SimulinkでC言語のS-function使いたい」を試している時の自分用メモ [長年日記]

 
 /*
   「SimulinkでC言語のS-function使いたい」を試している時の自分用メモ
   
 
   "サポートされているコンパイラまたは SDK が見つかりません。無償提供されている MinGW-w64 C/C++ コンパイラを
   インストールできます。「Install MinGW-w64 Compiler」を参照してください。その他のオプションについては、
   http://www.mathworks.com/support/compilers/R2015b/win64.html を参照してください。"
 
   ↓
 
   Cのコンパイラがないと言われているらしい。
   MATLABの中から呼んでも、インストールできなかったので、ブラウザで検索して、そこからダウンロードしたら
   インストールできた(二日がかり)
 
   ↓
 
   mex -setup
 
   ↓
 
   "MEX は C 言語のコンパイルに 'MinGW64 Compiler (C)' を使用するよう設定されています。
   警告: MATLAB C および Fortran API は、2^32-1 を超える要素のある MATLAB
   変数をサポートするように変更されました。今後、
   新しい API を利用できるようにコードを
   更新する必要があります。詳細は、
   http://www.mathworks.co.jp/jp/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html を参照してください。
   
   別の言語を選択するには、次のいずれかを選択してください。
   mex -setup C++ 
   mex -setup FORTRAN"
   
   ↓
 
   mex -setup C++ 
 
   ↓
 
   mex timestwo.c
 
   ↓
 
   "'MinGW64 Compiler (C)' でビルドしています。
   MEX は正常に完了しました。"
 
   ↓
 
   timestwo(4)
 
   ↓
   
   エラー: timestwo
   MEX level2 S-function "timestwo" must be called with at least 4 right hand arguments
 
   ↓
 
   >> timestwo(1,1,0,0)
   
   ans =
   
            0
            0
            1
            1
            0
            0
            1
            0
            0
            0
            0
            0
            0
            0
            0
            0
            0
            0
            0
      8480229
            0
            0
            0
         8194
            0
            0
            0
            0
            0
            0
            0
            2
            0
            0
            0
            0
            0
            0
            0
            0
   
 	  ↓
 	  
 	  まったく何のことやら分からんので、今からソースコードの解析に入る
 
 */
    
 
 /*
  * File : timestwo.c
  * Abstract:
  *       An example C-file S-function for multiplying an input by 2,
  *       y  = 2*u
  *
  * See simulink/src/sfuntmpl.doc
  *
  * Copyright (c) 1990-1998 by The MathWorks, Inc. All Rights Reserved.
  * $Revision: 1.3 $
  */
 
 
 #define S_FUNCTION_NAME  timestwo
 #define S_FUNCTION_LEVEL 2
 
 #include "simstruc.h"
 
 
 /* Function: mdlInitializeSizes ===============================================
  * Abstract:
  *   Setup sizes of the various vectors.
  */
 static void mdlInitializeSizes(SimStruct *S)
 {
   ssSetNumSFcnParams(S, 0);
   if (ssGetNumSFcnParams(S) != ssGetSFcnParamsCount(S)) {
 	return; /* Parameter mismatch will be reported by Simulink */
   }
   
   if (!ssSetNumInputPorts(S, 1)) return;
   ssSetInputPortWidth(S, 0, DYNAMICALLY_SIZED);
   ssSetInputPortDirectFeedThrough(S, 0, 1);
   
   if (!ssSetNumOutputPorts(S,1)) return;
   ssSetOutputPortWidth(S, 0, DYNAMICALLY_SIZED);
   
   ssSetNumSampleTimes(S, 1);
   
   /* Take care when specifying exception free code - see sfuntmpl.doc */
   ssSetOptions(S, SS_OPTION_EXCEPTION_FREE_CODE);
 }
 
 
 /* Function: mdlInitializeSampleTimes =========================================
  * Abstract:
  *    Specifiy that we inherit our sample time from the driving block.
  */
 static void mdlInitializeSampleTimes(SimStruct *S)
 {
   ssSetSampleTime(S, 0, INHERITED_SAMPLE_TIME);
   ssSetOffsetTime(S, 0, 0.0);
 }
 
 
 /* Function: mdlOutputs =======================================================
  * Abstract:
  *    y = 2*u
  */
 static void mdlOutputs(SimStruct *S, int_T tid)
 {
   int_T             i;
   InputRealPtrsType uPtrs = ssGetInputPortRealSignalPtrs(S,0);
   real_T            *y    = ssGetOutputPortRealSignal(S,0);
   int_T             width = ssGetOutputPortWidth(S,0);
   
   for (i=0; i
 

2016-10-07 Instrument Control Toolbox の TCP/IP 通信を用いてコンピュータ同士のソケット通信を行う方法を教えてください。 [長年日記]

_ http://jp.mathworks.com/matlabcentral/answers/97948-tcp-ip#answer_107298


2016-10-08 SimulinkのS-Functionビルダを使ってみる [長年日記]

_

=======

1. 背景

=======

SimulinkのS-Functionが、うんともすんとも動いてくれないので、

Youtubeから"Simulink" "S-Function"で検索した

S-Functionビルダの使い方(ML06 (english) - Simulink S-Function Builder basics)

というのが出てきたので、

(https://www.youtube.com/watch?v=rJfKX2W1WPQ#t=25.657259)

そっくりそのまま、やり方を真似てみたら、動いた。

忘れないうちにそのやり方を、私の為だけにメモしておく。

===========

2. 手順メモ

===========

(Step.1)

Simulinkライブラリブラウザ→"User-Defined Function"→"S-Function Builder"をドラッグ

(Step.2)

"S-Function Builder"の箱をクリック→ S-function名に"s_func_calc_power"と入力

(Step.3)

「データプロパティ」タブ→「入力端子」タブ→端子名"voltage"を作成(後はほっておく)

2つめの入力端子は「入力端子」タブの横にあるボタンで作れるので、端子名"current"を作成(後はほっておく)

(Step.4)

「データプロパティ」タブ→「出力端子」タブ→端子名"power"を作成(後はほっておく)

2つめの入力端子は「入力端子」タブの横にあるボタンで作れるので、端子名"resistance"を作成(後はほっておく)

(Step.5)

画面右上にある「ビルド」ボタンを押下

→"s_func_calc_power"という箱ができる

(Step.6)

Simulinkライブラリーブラウザ→"Commonly Used Blocks"→"Constant"を2つドラッグ

"Constant"とクリックして、片方に定数値"10"を、もう一方に定数値"2"を入力する。

そのブロックからの入力を、"s_func_calc_power"の"voltage"と"current"につなぐ

(Step.7)

Simulinkライブラリーブラウザ→"Commonly Used Blocks"→"Display"を2つドラッグ

"s_func_calc_power"の"power"と"resistance"から、"Display"につなぐ

(Step.8)

コマンドから、"mex s_func_calc_power.c s_func_power_wrapper.c" でコンパイル

(Step.9)

s_func_power_wrapper.cをクリックして、

==============================================================

/*

* Output functions

*

*/

void s_func_calc_power_Outputs_wrapper(const real_T *voltage,

const real_T *current,

real_T *power,

real_T *resistance)

==============================================================

==============================================================

/*

* Output functions

*

*/

void s_func_calc_power_Outputs_wrapper(const real_T *voltage,

const real_T *current,

real_T *power,

real_T *resistance)

{

*power = *voltage * *current;

*resistance = *voltage / *current;

==============================================================

と、入出力関係を追加する

(Step.10)

シミュレーションのボタンを押すと、2つのdisplayに、それぞれ20、5と表示される

=======

3. 結論

=======

こうすれば、s-functionのテンプレートプログラムは作れるので、わざわざS-functino

のコーディングをあーだこーだしなくても済む。


2016-10-13 駅データ.jp [長年日記]

_ http://www.ekidata.jp/

 中央線の駅の位置情報
 http://www.ekidata.jp/api/l/11311.xml
 
 
 11311
 JR中央本線(東京~塩尻)
 138.61735796977746
 35.77036733659977
 9
 
 
 
 http://www.ekidata.jp/api/l/11312.xml
  
 11312
 JR中央線(快速)
 139.53798847265625
 35.7001704211487
 10
 
 
 2016-09-23 21:13 GMT+09:00 江端智一 :
 時刻表
 http://ekikara.jp/newdata/line/1301061/down1_1.htm
 
 駅の位置情報
 http://www.ekidata.jp/

2016-10-14 位置情報をベースに座標を変換(線形)する超単純プログラム [長年日記]

_ http://www.kobore.net/henkan.cpp.html

   以下の情報をベースに座標を変換(線形)する超単純プログラム
   1    府中本町    139.4771944 35.66619444 0   0
   2    一橋学園    139.4800722 35.72216111 0   45
   3    竹芝  139.7619167 35.65397222 60  0
   4    北池袋   139.71675   35.74127778 60  45
   5    国分寺   139.480841  35.700123   3   34
   6    武蔵境   139.543402  35.702083   12  30
   7    三鷹  139.560325  35.702683   20  25
   8    吉祥寺   139.579765  35.703119   25  21
   9    高円寺   139.649664  35.705326   38  20
   10   荻窪  139.620109  35.704523   31  14
   11   新宿  139.700464  35.689729   47  20
   12   四ツ谷   139.730644  35.686041   52  17
   13   東京  139.766103  35.681391   56  15
   14   渋谷  139.701238  35.658871   50  4
   15   池袋  139.711086  35.730256   54  40

2016-10-15 FTPで転送されてきたビデオ画像を、問答無用で全て表示するhtmlを作るスクリプト [長年日記]


2016-10-16 crontab の場所が分からない [長年日記]

crontabの場所が分からなくて、以前記載した"del_1day"という文字だけを頼りに、find に探して貰った

sudo find ./ -type f -print |xargs grep 'del_1day'

以外なところにあった。

/etc/crontab

ただ、cronでは、最低周期が1時間なので、今回のケース(1分ごとに回す)には使えそうにない→他の方法を探す

上記は間違い。以下でいける

*/1 *	* * *	ebata    /home/ebata/video/monitor.sh > /home/ebata/video/monitor.html