找出一个索引与剩余索引之间的差异

时间:2018-01-08 17:31:05

标签: matlab performance loops vectorization

我有一个矢量:

A = [1 2 3 4 5];

我想找到A(1)和其余指数之间的区别:

A(1) = 1; 1 - A = [0 -1 -2 -3 -4]

然后我想继续A(2)直到向量结束。所以我在彼此的所有点之间存在差异。

目前我使用循环,但它非常耗时。如何使用矢量化技术来提高性能?

我正在使用MATLAB 2016a

1 个答案:

答案 0 :(得分:7)

如果您使用2016a或更早版本,则表示您想使用bsxfun

func jump() {
    Football?.texture = SKTexture(imageNamed: "Football")
    Football?.physicsBody?.applyImpulse(CGVector(dx: 100, dy: 2000))
}

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
    for t in touches { self.touchUp(atPoint: t.location(in: self)) }
}

func touchUp(atPoint pos: CGPoint) {
    Football?.texture = SKTexture(imageNamed: "Football")
}

override func update(_ currentTime: TimeInterval) {
    // Called before each frame is rendered
}

从2016b(或Octave)开始,您可以利用隐式扩展并取消>> 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

bsxfun