行列データ内の任意の​数字から新たに行列を​作成したい。

2 views (last 30 days)
amemori
amemori on 14 Oct 2020
Commented: 源樹 上林 on 7 Nov 2020
行列データ内で任意の数字が現れたタイミングから新たに始まる行列を作成することはできますか?
具体的には、様々なn×2行列において一列目に10000という数値が生じたタイミングをグラフのx軸において0となるように新たに行列を作成したいです。
  1 Comment
源樹 上林
源樹 上林 on 7 Nov 2020
 できます。ただし実装方法は状況次第で変わると思います。
 n×2行列とx軸の関係が明確ではありませんので、あくまで推定で解釈してスクリプトを書いてみました。さまざまということなので1列目に10000が複数出現するような場合は、もう少し手を加える必要があります。
% n×2行列
x = -31416:1:31416; % 説明をわかりやすくするため整数限定
y = sin(x./10000);
data = [x; y]';
% 10000という数値が生じたタイミングの1000
limit = 10000;
% 1列目がx軸、2列目がy軸 という解釈で合ってるきっと!
plot(data(:,1), data(:,2))
grid on
hold on
% limit のところを 0 にシフト
% こういう行列がほしいが、0より下はいらない
plot(data(:,1) - limit, data(:,2))
% 1列目に limit を見つけたら data を更新
f = find(data(:,1) == limit);
if not(isempty(f)) % 無いというケースもある
data = data(f(1):end, :);
end
data(:,1) = data(:,1) - limit;
% 完成
plot(data(:,1), data(:,2), 'Linewidth', 5)

Sign in to comment.

Answers (0)

Categories

Find more on table in Help Center and File Exchange

Tags

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!