データ処理に使用する関数を読み込ませる

8 views (last 30 days)
HIronori Kamachi
HIronori Kamachi on 27 Feb 2019
csvファイルのデータをアプリで処理する際に、事前に処理に使用する関数を別の設定ファイル(例えばtxtファイル)から読み込んでおいて、その関数を使用して処理するということを考えております。(関数を種々変えながら最適な関数を選択するため)
関数は、設定ファイルの中の関数を書き換えることで適用される関数が変えられるようにすることを考えています。
関数に関しては無名関数や関数ハンドルで設定可能というのはわかったのですが、設定したファイルからどのようにして関数を読み込めばいいのかがよくわかりません。
readtableだと勝手に切り刻まれてしまいますし、csvでは文字が使えなさそうですし。
何か簡潔でよい方法はないでしょうか。
例)
入力:xxxx.csv(データファイル), zzzz.txt(関数設定ファイル),→読み込み→計算:(〇〇〇〇.exe)→出力:xxxx2.csv(zzzz.txtに設定された関数でxxxx.csvを処理したデータファイル)
zzzz.txt(関数設定ファイル)をどのようにして読み込むか?
  12 Comments
HIronori Kamachi
HIronori Kamachi on 4 Mar 2019
1. とりあえず簡単にスクリプト書いてfilereadで想定した自作関数(ヘッダを含めて4行、3つの想定関数例を記述したテキストファイル)の読み込みはテキストデータとして1行のキャラクタデータとして読み込めたので、後はこれを4行に分けて1行ずつ取得?分離?すればいいことだと思います。
2.m-fileというのがよくわかっていないので簡単に説明もしくは例をご教示いただけたらと思います。もしかしてhogehoge.mに関数を設定しておくということでしょうか。
その場合、メインの処理用の.exeが動いている際に例えば同一フォルダに入れておいて、hogehoge.mを読みに行ったり、exeが動いている最中に、別の外部機器(プログラム)からのデータ入力ファイル(.csvファイル)がフォルダ内に書き込まれるまではexeは一時停止しますので、それを利用してhogehoge.mの入れ替えなどはできるのでしょうか。
HIronori Kamachi
HIronori Kamachi on 5 Mar 2019
とりあえずスクリプトでは動作確認できました。
まだ組み込みは行ってませんが。
myfunction2.txt の中身は以下の通りです
myfunction_setting
@(a,b,c)a*log10(b*c)
@(a,b,c)a*b*c
動作確認できたスクリプトは以下の通りです
最終的には下4行はまとめて、myfunctionの定義数に伴い自動的に増減できるようにして
組み込む予定です。
fid = fopen('myfunction2.txt');
line_ex = 0;
n=0;
str1=strings;
while line_ex ~= -1
n=n+1;
line_ex = fgetl(fid);
if line_ex ~=-1
str1(n,1) = line_ex;
else
end
end
fh1=str2func(char(str1(2,1)));
fh2=str2func(char(str1(3,1)));
fktn(1,1)=fh1(5,10,10);
fktn(1,2)=fh2(2,2,10);

Sign in to comment.

Answers (0)

Categories

Find more on データのインポートとエクスポート in Help Center and File Exchange

Products


Release

R2017a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!