xdataの行とydataの行の同じ行をxdataの行と等しい行のydataを削除する方法
2 views (last 30 days)
Show older comments
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 Comments
Answers (1)
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
See Also
Categories
Find more on ワークスペース変数と MAT ファイル 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!