![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/728129/image.jpeg)
diff関数,複数の差分,行列の列間の差分について
24 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
佳奈子 浜口
am 3 Sep. 2021
Beantwortet: Atsushi Ueno
am 3 Sep. 2021
複数の差分
ベクトルを作成し、要素間の 2 階差分を計算します.
2 階差分とはどういう意味でしょうか?
2つ横の要素との差ではないようですので
どう理解すればよいのか,把握しかねております.
X = [0 5 15 30 50 75 105];
Y = diff(X,2)
Y = 1×5
5 5 5 5 5
行列の列間の差分について
下記の説明が記載されておりますが
(X,1,2)の1,2は何を指定しているのでしょうか?
こちらは単純に1つ隣の数,方向性の指定ということで良いのでしょうか?
「列間の 1 次差分を計算します。」
X = [1 3 5;7 11 13;17 19 23];
Y = diff(X,1,2)
Y = 3×2
2 2
4 2
2 4
https://jp.mathworks.com/help/matlab/ref/diff.html?searchHighlight=diff&s_tid=srchtitle#btwmxq8-10
0 Kommentare
Akzeptierte Antwort
Hernia Baby
am 3 Sep. 2021
■1つ目の質問
2階差分は簡単に言うとお隣さんの差を取る作業を何回やりますかって話です。
以下例で見てみましょう。
X = [0 5 15 30 50 75 105];
Y_1 = diff(X,1)
Xの差をとったY_1にもう一度diff関数で差を取ります。
Y_2 = diff(Y_1,1)
この動作が以下の diff(X,2) に相当します。
Y = diff(X,2)
■2つ目の質問
diff(X, 1, dim)の引数dimは引く方向になります。
これはXがベクトルではなく、行列の場合で使用します。
縦と横、どっちのお隣さんの差を取りますかって話です。
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/728129/image.jpeg)
以下、例を見てみましょう。
X = [1 3 5;7 11 13;17 19 23]
これを横方向の差と縦方向の差それぞれ出してみます
上下の差について
Y = diff(X,1,1)
左右の差について
Y = diff(X,1,2)
0 Kommentare
Weitere Antworten (1)
Atsushi Ueno
am 3 Sep. 2021
> 2 階差分とはどういう意味でしょうか?
→2段階(2連続)差分、差分の差分、という意味です。ドキュメントにも「Y = diff(X,n) は、diff(X) 演算子を再帰的に n 回適用することで n 階差分を計算します」と説明があります。
X = [0 5 15 30 50 75 105];
Y = diff(X,2)
Y = diff(diff(X))
>(X,1,2)の1,2は何を指定しているのでしょうか?こちらは単純に1つ隣の数,方向性の指定ということで良いのでしょうか?
→仰る通りで、2番目の引数1は差分の次数、3番目の引数2は次元(方向性)の指定です。
MATLAB関数を説明するドキュメントにおいて、引数の数と順番に着目し、引数の意味を説明する文書に辿り着けます。例えば下図のように辿っていけます。
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/728134/image.png)
0 Kommentare
Siehe auch
Kategorien
Mehr zu ソルバー出力と反復表示 finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!