ADCから取得したデ​ータの処理を、自動で​任意の回数だけ実行し​、かつコード内で得ら​れた行ベクトルデータ​を蓄積していけるよう​なプログラムを作りた​いです。

3 views (last 30 days)
元幹 井上
元幹 井上 on 14 Dec 2023
Edited: Atsushi Ueno on 16 Dec 2023
ADCから取得したデータを処理するようなプログラムを作成しています。そのプログラムでは、ある一定時間の測定データを処理することで、ある一列の行ベクトルAが得られます。そこで、その行ベクトルの変数AだけをPCに残してから再度プログラムを実行し、得られた行ベクトルAを前の実行時に得られた行ベクトルにそのまま追加もしくは同じmatファイルに自動で保存していけるようなプログラムを作りたいです。また、実行は最初に実行回数を設定してその数だけ自動で実行できるようにしたいです。アドバイスがありましたらよろしくお願い致します。

Answers (1)

Atsushi Ueno
Atsushi Ueno on 16 Dec 2023
Edited: Atsushi Ueno on 16 Dec 2023
MATファイル Version 7.3 を使った「変数の一部の読み込みまたは保存」機能を使っています
  • 繰返し数を5回、Aを1行10列のダミー値とします
  • Aは固定サイズの行ベクトルで、列数が変化する事は想定していません
  • MATファイルがあるのに変数Aが記録されていない場合は想定していません。
filename = 'myFile.mat'; % 同じmatファイルに自動で保存
matObj = matfile(filename,'Writable',true); % MATファイルにアクセスする為のオブジェクト
if isfile(matObj.Properties.Source) % 既存のMATファイルに追記する場合
[nrows,ncols] = size(matObj,'A'); % 追記する為、Aのサイズを取得
else % 初めて記録を開始する場合
save(filename,'-v7.3'); % 新たにMATファイルを作成
nrows = 0;
end
rpn = 5; % input("繰返し数を入力:"); % 実行は最初に実行回数を設定
for k = 1:rpn % その数だけ自動で実行できる
A = rand(1,10); % 行ベクトルの変数 A (ダミー値:ここをAの取得関数に変更する)
nrows = nrows + 1; % 追記する行数を計算
matObj.A(nrows,1:size(A,2)) = A; % Aを前の実行時に得られた行ベクトルにそのまま追加
end

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!