mathematica中涉及到下面的幾個函式:
這些主要對實數操作,對複數操作的時候,還需要用realdigits
把小數表示成各個位數及其十進位制指數的形式(但丟失符號位)
fromdigits
從
realdigits
的結果,還原這個數,但表示為有理數形式(無法恢復丟失的符號位資訊)
sign
考慮到符號的丟失,需要通過
sign
函式獲取符號,然後相乘。
im
和re
函式提取出虛部和實部之後分別處理;然後把實部和虛部乘以虛數單位相加得到轉換並復原的複數。
舉個例子可能更加生動具有可操作性。比如,這個mat二進位制資料格式的檔案(如果這個鏈結失效了,使用者可以自己用隨機數發生器生成一些資料作為練習之用),包含了 18×
18 的複數矩陣
a 和 18×
1的實向量
b 。
如何把它們都變成有理數表示的形式呢?
先用import
匯入資料:
data
=import
["e:\\downloads\\data1.mat"
];
所得到的data
是乙個包含了兩個元素的list
:
復矩陣a18×
18放在data[[1]]
中,而實數向量 b18
×1放在data[[2]]
中。轉換它們的**分別是:
(map[fromdigits, realdigits@(re@data[[1]]), ]*
sign[data[[1]] // re] +
i *sign[data[[1]] // im]*
map[fromdigits, realdigits@(im@data[[1]]), ])
和
(fromdigits @@@ realdigits[data[[2]]])*sign[data[[2]]]
從上面可以看出,向量的轉換簡單一些;實數的轉換尤其是。但對矩陣、尤其是複數矩陣作轉換時,頗為繁瑣。好在萬變不離其宗。稍作調整之後,這樣就完成了轉化。
下面這些不知道怎麼回事??
把int轉換為char把int轉換為char
char ultoa unsigned long value,char string,int radix 將無符號整型數value轉換成字串並返回該字串,radix為轉換時所用基數 char ltoa long value,char string,int radix 將長整型數value轉換成字串並...
把char 轉換為wchar t
把 char 轉換為wchar t 用 stdlib.h 中的mbstowcs s 函式,可以通過下面的例子了解其用法 char cstr string to convert size t len strlen cstr 1 size t converted 0 wchar t wstr wstr ...
把DataTable轉換為List
前一篇有學習過 把list轉換為datatable 那此篇,將是學習反向,把datatable轉換為list。這個方法使用的較多。很多情況之後,從資料讀出來的資料是dataset或是datatable。需要把它們轉換為list之後,再轉換為json。下面insus.net寫乙個擴充套件方法 接下來,...