2011-11-25 67 views
2

請在屏幕上對點進行垂直反射對稱,請考慮以下事項。替換列表中的項目

scrWidthCM=40 

originals={{14.2065, 10.609, 0.974938}, {19.5653, 6.92721, 0.974938}, 
      {30.4607,17.4802, 0.974938}, {27.4621, 10.0393, 0.974938}, 
      {15.915, 20.4278,0.974938}, {28.6921, 5.2132, 1.53205}, 
      {27.0317, 24.8346,1.53205}, {20.8853, 18.8588, 1.53205}} 

其中每個子表對應於:{x座標,Y座標值,半徑}

運用對稱傳輸到每個8分:

(scrWidthCM - #[[1]]) & /@originals 

我怎麼能取代的第一個值每個子列表而不是簡單地計算其反射的X座標?

回答

4

假設你想直接修改originals對象:

originals[[All, 1]] = scrWidthCM - originals[[All, 1]] 

如果你想要一個副本,然後使用:

{scrWidthCM - #, ##2} & @@@ originals 
+0

謝謝你,第二個真正解決我的「真正的問題」因爲我的原件是由我在這裏發佈的96個清單組成的。然而,令我困惑的是,你的代碼可以將它應用到原件[[1]](原文的等價物)以及原件上,其中包含96個列表,如上所述。你能解釋我爲什麼嗎?非常感謝 ! – 500

+0

嗯,密謀,它實際上不起作用。我會簡單地將你的解決方案映射到我的大名單上:-) – 500

+0

@ 500,你是說第二行是你想要的嗎,但是你的實際數據有'ArrayDepth'等於'3'嗎?在這種情況下,我相信你想要的是:'應用[{scrWidthCM - #,## 2}&,data,{2}]'(這是上面使用的'@@@'的一種長形式,級別規範'{2}'代替'{1}')。 –

相關問題