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

조회 수: 3 (최근 30일)
恵輔 沖
恵輔 沖 2023년 3월 20일
이동: Atsushi Ueno 2023년 4월 5일
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

답변 (1개)

Atsushi Ueno
Atsushi Ueno 2023년 3월 20일
>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
恵輔 沖
恵輔 沖 2023년 4월 5일
이동: Atsushi Ueno 2023년 4월 5일
ありがとうございます。
解決しました。

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 ワークスペース変数と MAT ファイル에 대해 자세히 알아보기

제품


릴리스

R2022a

Community Treasure Hunt

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

Start Hunting!