【App designer】測​​定データの該当区間​の​みグラフ化するア​プリ

5 views (last 30 days)
RK
RK on 31 Jan 2022
Answered: Naoya on 3 Feb 2022
下記のアプリを検討しています。
①ファイル(添付画像)を読み込み
②該当箇所を判定(画像でいう赤枠箇所)
③最初の区間の範囲(画像でいう2~5行目)でのみグラフを作成
df = diff(app.data(:, 1));
idx = find(df >= 1, inf, 'first');
rows = zeros(1, numel(idx));
pos = 1;
for n = 1:numel(idx)
checkFlag = find(app.data(idx(n):end, 2) >= 1, 1, 'first');
if ~isempty(checkFlag) && (idx(n) > pos)
rows(1, n) = checkFlag;
pos = idx(n) + checkFlag - 1;
end
end
なお、グラフの作成は赤枠内のデータをY軸とし、X軸はこのY軸をもとに作成したいと考えています。
下記のようなイメージです。
また、以前同様の質問をしまして、下記のような回答をいただいています。
Y1 = [0 1 1 1 ]; %最初の該当区間となるデータを読み込み
Y2 = [0 0 0 1 ];
X = [0 0 0 1 ]; %該当区間のはじめを基準に幅2となるX軸データを作成
plot(app.UIAxes,x,y1,y2);
上記③の方法について、ご教授いただけますと幸いです。
よろしくお願いいたします。

Accepted Answer

Naoya
Naoya on 3 Feb 2022
信号の立ち上がり/立下りの探索は、Signal Processing Toolbox があればそれぞれrisetime/ falltime で求めることができます。
これらの機能を使用して、信号列に対して最初の立ち上がり->立下り区間のみを描画するフローとしては以下例が考えられます。
% 添付画像に対応するデータの作成
data = [0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1
0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1]';
% 立ち上がり時間,立下り時間を探索
[~,rt] = risetime(data(:,1));
[~,~,ft] = falltime(data(:,1));
% 立ち上がり時間,立下り時間に対してround処理
rt = round(rt);
ft = round(ft);
% 最初の立ち上がり<->立下り区間に対してプロット描画
plot(rt(1):ft(1), data(rt(1):ft(1),1), rt(1):ft(1), data(rt(1):ft(1),2) )

More Answers (0)

Categories

Find more on 行列および配列 in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!