フィルターのクリア

Finding the difference between one idex and the remaining indices

2 ビュー (過去 30 日間)
Michael
Michael 2018 年 1 月 8 日
回答済み: Michael 2018 年 1 月 9 日
I have a vector:
A = [1 2 3 4 5];
I want to find the difference between A(1) and the remaining indices:
A(1) = 1; 1 - A = [0 -1 -2 -3 -4]
I then want to continue to A(2) and until the end of the vector. So that I have the differenced between all points from each other.
At the moment I use loops but it is very time consuming. How can I do this using vectorization techniques to improve performance?
Many thanks! MATLAB 2016a

採用された回答

Michael
Michael 2018 年 1 月 9 日
If you're using 2016a or earlier, you'll want to use bsxfun:
>> A = [1 2 3 4 5]; >> bsxfun(@minus, A.', A) ans =
0 -1 -2 -3 -4
1 0 -1 -2 -3
2 1 0 -1 -2
3 2 1 0 -1
4 3 2 1 0
Starting in 2016b (or in Octave), you can take advantage of implicit expansion and do away with bsxfun:
>> A.' - A ans =
0 -1 -2 -3 -4
1 0 -1 -2 -3
2 1 0 -1 -2
3 2 1 0 -1
4 3 2 1 0

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by