行列から条件を指定して値を取り出す
12 views (last 30 days)
Show older comments
以下のような行列Aの2行目の要素で1が連続している時と0が連続しているときの1行目の値の差を取り表示したいですのです。[1 1 0 0] の一区切りならなんとかできるのですが以下に示す行列のように[1 1 0 0 1 1 0 0]と連続している部分が分かれている時それぞれの値をどのようにして求めればいいのかわかりません。
次のような行列があるとします。
A=
0 1 2 4 3 6 4 8 5 9 6 12
1 1 0 0 1 1 0 0 1 1 0 0
この時1が連続してる列の1行目の差(1-0, 6-3, 9-5)
B=
1 3 4
0が連続している列の1行目の差(4-2, 8-4, 12-6)
C=
2 4 6
というように求めたいのですがどのようにすればよいでしょうか。ご指導をお願いしたいです。
0 Comments
Accepted Answer
Akira Agata
on 12 Nov 2020
もし、行列Aの2行目の要素で 1 (or 0) が偶数個連続している部分があり、かつ要素が 1 (or 0) の列のうち 2k 番目と 2k-1番目との差を取りたいということであれば、以下の方法で計算可能です。
A = [ 0 1 2 4 3 6 4 8 5 9 6 12; 1 1 0 0 1 1 0 0 1 1 0 0];
idx = A(2,:) == 1;
B = diff(A(1,idx));
B = B(1:2:end);
C = diff(A(1,~idx));
C = C(1:2:end);
More Answers (0)
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!