xdataの行とydataの行の同じ行をxdataの行と等しい行のydataを削除する方法
1 回表示 (過去 30 日間)
古いコメントを表示
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
0 件のコメント
回答 (1 件)
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
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!