我有一个Matlab函数,它将矩阵和chunk_size作为输入,将其重塑为chunk_size维的块。
例如,如果我有以下矩阵:
data=
1 3
2 5
3 42
4 35
5 16
6 48
7 2
8 22
9 20
10 39
11 40
使用chunk_size为3的函数将输出:
data(:,:,1) =
1 3
2 5
3 42
data(:,:,2) =
4 35
5 16
6 48
data(:,:,3) =
7 2
8 22
9 20
原始数据的最后几行被丢弃,因为它们不完全适合一个块。
我现在可以让用户通过函数参数指定要应用于3D矩阵的每个切片的函数。 因此,例如,如果用户想要应用元素的总和,他可以使用matlab提供的sum函数来获取:
data(:,:,1) =
6 50
data(:,:,2) =
15 99
data(:,:,3) =
24 44
同时,我希望例如允许用户让他在其他维度上应用sum函数,以获得:
data(:,:,1) =
4
7
45
data(:,:,2) =
39
21
54
data(:,:,3) =
9
30
29
我觉得所有这些都可以通过匿名函数或类似的方式获得,但我无法弄清楚如何。
任何帮助都将非常感激。
由于
答案 0 :(得分:0)
class ArtScene: SCNScene{
var image = UIImage()
var geometry = SCNBox()
var motion = MotionKit()
var node = SCNNode()
convenience init(create: Bool) {
self.init()
image = UIImage(named: "sf")!
let lenght: CGFloat = 50
let width: CGFloat = self.image.size.width
let height: CGFloat = self.image.size.height
self.geometry = SCNBox(width: width / 1000 , height: height / 1000, length: lenght / 1000, chamferRadius: 0.005)
print("Geometry WIDTH: \(self.geometry.width)")
print("Geometry LENGHT: \(self.geometry.length)")
self.geometry.firstMaterial?.diffuse.contents = UIColor.red
self.geometry.firstMaterial?.specular.contents = UIColor.white
self.geometry.firstMaterial?.emission.contents = UIColor.blue
node = SCNNode(geometry: self.geometry)
self.rootNode.addChildNode(node)
}
func rotate() {
motion.getDeviceMotionObject { (deviceMotion) in
let rotationY = deviceMotion.rotationRate.y
print(rotationY)
let rotationAction = SCNAction.rotate(by: CGFloat(1.0), around: SCNVector3(0,rotationY,0), duration: 2.0)
self.node.runAction(rotationAction)
}
}
此
的输出6 50
4
7
45