Upp*_*ide 1 performance matlab loops vectorization
我有一个矢量:
A = [1 2 3 4 5];
Run Code Online (Sandbox Code Playgroud)
我想找到A(1)和其余指数之间的区别:
A(1) = 1; 1 - A = [0 -1 -2 -3 -4]
Run Code Online (Sandbox Code Playgroud)
然后我想继续A(2),直到矢量结束.所以我在彼此的所有点之间存在差异.
目前我使用循环,但它非常耗时.如何使用矢量化技术来提高性能呢?
我正在使用MATLAB 2016a
如果您使用的是2016a或更早版本,则需要使用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
Run Code Online (Sandbox Code Playgroud)
从2016b(或Octave)开始,您可以利用隐式扩展并取消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
Run Code Online (Sandbox Code Playgroud)