作者kanonehilber (我愛U-15!!!)
看板Mathematica
標題[問題] 二維資料格式
時間Tue Apr 9 03:26:44 2013
其實我不知道該如何描述我遇到的狀況,結果下了這樣一個怪標題
我的狀況是這樣的
有一個雙變數的函數w(u,v),要對u和v在某個區間內做運算
舉個例
u從5.6開始每隔0.2一個點直到6.2
v從18開始每隔1一個點直到20
作法如下
先建立一個雙元素的矩陣 (我不知道這是不是稱為雙元素矩陣,臨時取名
(in)
mat = {i, j};
mat2 = Table[mat, {i, 5.6, 6.2, 0.2}, {j, 18, 20, 1}]
mat2 // MatrixForm
(out)
{{{5.6, 18}, {5.6, 19}, {5.6, 20}}, {{5.8, 18}, {5.8, 19}, {5.8,
20}}, {{6., 18}, {6., 19}, {6., 20}}, {{6.2, 18}, {6.2, 19}, {6.2,
20}}}
MatrixForm出來就是一個4 x 3的雙元素矩陣
===========================
再做運算
(in)
For[n = 1, n < 4, n++, (
For[m = 1, m < 5, m++, (
mat3 = mat2[[m, n]];
w = Function[{u, v}, u^2 + v^4][mat3[[1]], mat3[[2]]];
Print[w]
)];
)];
(out)
105007.
105010.
105012.
105014.
130352.
130355.
130357.
130359.
160031.
160034.
160036.
160038.
結果就是一長串,我想把算出來的結果也變成一開始那種4 x 3的矩陣,不過怎麼
都弄不出來,後來有在板上找到類似的討論串,有人用Table或Map的方式做,但是當時
文章裡都是處理一維的問題,我試了半天都沒有辦法把它變成4 x 3的矩陣
麻煩各位版友解惑了
感激不盡 > <
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.195.44.55
※ 編輯: kanonehilber 來自: 123.195.44.55 (04/09 03:33)
推 tml:Apply[#1^2+#2^4,mat2,{2}] 04/09 08:45
→ tml:Apply[#1^2+#2^4&,mat2,{2}]少寫一個& 04/09 08:45
→ kanonehilber:哇 太謝謝你了!! 04/09 08:50
→ kanonehilber:我再研究看看他是怎麼變成這樣的~~ 04/09 08:51
推 LPH66:Table 也可以做二維的啊 以你的例子就是 04/09 08:52
→ LPH66:Table[mat2[[n,m,1]]^2+mat2[[n,m,2]]^4,{n,1,3},{m,1,4}] 04/09 08:54
→ LPH66:其實你一開始的那個 Table 寫法就是這樣的結構 04/09 08:54
→ LPH66:所以也可以乾脆就一開始直接這樣建起來: 04/09 08:55
→ LPH66:Table[u^2+v^4,{u,5.6,6.2,0.2},{v,18,20,1}] 04/09 08:56
→ kanonehilber:原來如此,接觸程式還不太久,感謝你提供的想法^^ 04/09 13:01
→ kanonehilber:Table的第一行好像有點問題@@ 晚點再來研究看看~ 04/09 13:12
→ jurian0101:加油,快學會Apply跟Map,向For loop說再見吧XD 04/10 07:04
→ jurian0101:若中間的矩陣另有需要才分別出來,否則LPH一行寫法善 04/10 07:06
→ kanonehilber:向For loop說再見XDDDD 04/12 01:01
→ kanonehilber:話說我的其中有一段要代入的函數不是算數字,是另一 04/12 01:03
→ kanonehilber:個子程式的指令,不知道為什麼Table會有問題,目前用 04/12 01:04
→ kanonehilber:Apply做,有時間再來研究一下這些loop的特性~~ 04/12 01:04