特定の数列から、特定の値を取り出す方法
2 次查看(过去 30 天)
显示 更早的评论
A列にフラグとなる数列、B列に取り出したい値があります。このとき、赤と青のように抽出したいです。
条件としては、A(n+1)-A(n)が0.5より大きいとき別の配列、A(n+1)-A(n)が0.1より小さいとき同じ配列にしたいです。
また、出力としては、value(:,1)=[14;34;56;78;24],value(:,2)=[12;32;21;89]としたいです。
どなたか助言お願いいたします。
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/797709/image.jpeg)
回答(1 个)
Atsushi Ueno
2021-11-12
编辑:Atsushi Ueno
2021-11-12
flag = (0.001:0.001:0.2)'; % A列にフラグとなる数列(flag)
value = randi(99, [200 1]); % B列に取り出したい値(value)
for i = 21:20:200
flag(i:end) = flag(i:end) + 0.8;
end
scatter(1:200, flag, 5); % ここまで、A列(flag)とB列(value)のサンプルデータを作成しました
>出力としては、value(:,1)=[14;34;56;78;24],value(:,2)=[12;32;21;89]としたいです。
分割した各列の長さは異なる様なので、配列(ベクトル)ではなくセル配列に格納する事をお勧めします。
bnd = find(diff(flag) > 0.1); % A列(flag)の差分が0.1より大きくなる境界のindex
arslen = [bnd(1); diff(bnd); size(flag,1)-bnd(end)]; % 境界index間の長さを取得
divided_flags = mat2cell(flag, arslen, 1) % 配列を境界index間の長さで分割してセル配列に格納
divided_value = mat2cell(value, arslen, 1) % 配列を境界index間の長さで分割してセル配列に格納
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!