xdataの行とyd​ataの行の同じ行を​xdataの行と等し​い行のydataを削​除する方法

1 view (last 30 days)
恵輔 沖
恵輔 沖 on 20 Mar 2023
Moved: Atsushi Ueno on 5 Apr 2023
data = dir('*.csv');
for n = 2:1:length(data)
data_csv = readmatrix(data(n).name);
data_name = data(n).name;
[Nc, Nr] = size(data_csv);
indata = data_csv(14:Nc, 2:3);
%xdataを0から読み取り、1つ前のdataよりdataが小さくなれば、終了させる方法を知りたいです。
xdata = indata(:, 2);
ydata = 10^3 * indata(:, 1) ./ data_A(n, 1);
xdata(xdata <= 0) = []; % csvのデータを0以下のものは削除
%xdataで削除行をydataの行と同じ行の部分を削除したいのですが何かいい方法はありませんか?
xend = find(diff(xdata) < 0) % 1つ前のdataよりdataが小さくなれば、終了させる
plot(xdata(1:xend), ydata(1:xend),'b')
hold on
end
hold off

Answers (1)

Atsushi Ueno
Atsushi Ueno on 20 Mar 2023
>xdataで削除行をydataの行と同じ行の部分を削除したいのですが何かいい方法はありませんか?
(xdata <= 0)は線形インデックス(単なる整数)なので、xdataにもydataにも適用する事が可能です。
従って xdata(xdata <= 0) = []; ydata(xdata <= 0) = []; とすれば、xdata と ydata の同じ部分だけを削除する事が出来ます。
data = dir('*.csv');
for n = 2:1:length(data)
data_csv = readmatrix(data(n).name);
data_name = data(n).name;
[Nc, Nr] = size(data_csv);
indata = data_csv(14:Nc, 2:3);
%xdataを0から読み取り、1つ前のdataよりdataが小さくなれば、終了させる方法を知りたいです。
xdata = indata(:, 2);
ydata = 10^3 * indata(:, 1) ./ data_A(n, 1);
xdata(xdata <= 0) = []; % csvのデータを0以下のものは削除
%xdataで削除行をydataの行と同じ行の部分を削除したいのですが何かいい方法はありませんか?
ydata(xdata <= 0) = [];
xend = find(diff(xdata) < 0) % 1つ前のdataよりdataが小さくなれば、終了させる
plot(xdata(1:xend), ydata(1:xend),'b')
hold on
end
hold off
  1 Comment
恵輔 沖
恵輔 沖 on 5 Apr 2023
Moved: Atsushi Ueno on 5 Apr 2023
ありがとうございます。
解決しました。

Sign in to comment.

Categories

Find more on MATLAB in Help Center and File Exchange

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!