假设func resize(image: NSImage, w: Int, h: Int) -> NSImage {
let destSize = NSMakeSize(CGFloat(w), CGFloat(h))
let rep = NSBitmapImageRep(bitmapDataPlanes: nil, pixelsWide: Int(destSize.width), pixelsHigh: Int(destSize.height), bitsPerSample: 8, samplesPerPixel: 4, hasAlpha: true, isPlanar: false, colorSpaceName: .calibratedRGB, bytesPerRow: 0, bitsPerPixel: 0)
rep?.size = destSize
NSGraphicsContext.saveGraphicsState()
if let aRep = rep {
NSGraphicsContext.current = NSGraphicsContext(bitmapImageRep: aRep)
}
image.draw(in: NSMakeRect(0, 0, destSize.width, destSize.height), from: NSZeroRect, operation: NSCompositingOperation.copy, fraction: 1.0)
NSGraphicsContext.restoreGraphicsState()
let newImage = NSImage(size: destSize)
if let aRep = rep {
newImage.addRepresentation(aRep)
}
return newImage
}
是一个复杂的矩阵,我们希望尽可能有效地计算产品A
。 A%*%Conj(t(A))
是Hermitian matrix所以基本上我们只需要计算对角线上的元素和对角线下面的元素,因为对角线上方的元素可以通过简单地取下面的值的复共轭来获得对角线。
我想使用A%*%Conj(t(A))
,但这会给tcrossprod(A)
。如果我使用A%*%t(A)
,则tcrossprod(A,Conj(A))
似乎不会使用产品的特殊结构来加速计算。
我怎样才能加快R
的计算速度?是否有类似于A%*%Conj(t(A))
的命令可以提供tcrossprod
?
非常感谢任何帮助!