2017-06-18 42 views
0

這是事情:我想修改(然後返回)在函數的參數中給出的整數矩陣。函數平均值(類MatrixMotionBlur)給出了自己的像素,上,下和左像素之間的平均值。按照以下公式:斯卡拉平均像素的返回矩陣

result(x,y)=(M1(x,y)+ M1(x-1,y)+ M1(x,y-1)+ M1(x,y + 1) )/ 4

這是代碼我實現了迄今爲止

MatrixMotionBlur - 平均功能 enter image description here

MotionBlurSingleThread - 運行 enter image description here

這裏的objetive是運用 「平均」 的方法改變矩陣價值e並返回該矩陣。事情是當我在矩陣中插入值時,程序給了我錯誤。

任何想法如何做到這一點?

+0

請使用正確的代碼格式,而不是屏幕截圖......這些屏幕截圖泄露了很多與手頭問題無關的信息。看看這裏:https://stackoverflow.com/editing-help#comment-formatting – EmilioMg

回答

0

功能的方式

val updatedData = data.map{ outter => 
    outter(i).map{ inner => 
     mx.average(i.j) 
    } 
} 

注重的是Seq是不可變的集合類型,你不能只是修改它,你只能創建新的,修改的集合。

順便說一句,爲什麼你迭代開始1,但不是0.你確定你想要它嗎?

+0

def run(數據:Seq [Seq [Int]],numberOfWorkers:Int)=未來[Seq [Seq [Int]]] { val mx = new MatrixMotionBlur var myMatrix = ofDim [Int](data.length,data(0).length) for(i < - 1 until data.length-1){ji-1數據(i)。長度-1){ VAL V1:INT = mx.average(數據,I,J) 的println( 「勇氣Transformado」 + V1) myMatrix的(ⅰ)(j)的= V1 } } return myMatrix } 我試着創建一個新的toDim矩陣,然後使用前面的矩陣值對其進行更新。但仍然不允許我返回類型 –

+0

數組也是不可變的。你需要讀一些關於Scala集合類型的東西,好的起點是https://twitter.github.io/scala_school/collections.html – mulya