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

조회 수: 7 (최근 30일)
amemori
amemori 2020년 10월 14일
댓글: 源樹 上林 2020년 11월 7일
行列データ内で任意の数字が現れたタイミングから新たに始まる行列を作成することはできますか?
具体的には、様々なn×2行列において一列目に10000という数値が生じたタイミングをグラフのx軸において0となるように新たに行列を作成したいです。
  댓글 수: 1
源樹 上林
源樹 上林 2020년 11월 7일
 できます。ただし実装方法は状況次第で変わると思います。
 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)

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

답변 (0개)

카테고리

Help CenterFile Exchange에서 MATLAB에 대해 자세히 알아보기

태그

제품


릴리스

R2020a

Community Treasure Hunt

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

Start Hunting!