把雙精度複數轉換為有理數形式的實部和虛部

2021-07-11 08:41:47 字數 1239 閱讀 9063

mathematica中涉及到下面的幾個函式:

realdigits把小數表示成各個位數及其十進位制指數的形式(但丟失符號位)

fromdigits

realdigits的結果,還原這個數,但表示為有理數形式(無法恢復丟失的符號位資訊)

sign

考慮到符號的丟失,需要通過sign函式獲取符號,然後相乘。

這些主要對實數操作,對複數操作的時候,還需要用imre函式提取出虛部和實部之後分別處理;然後把實部和虛部乘以虛數單位相加得到轉換並復原的複數。

舉個例子可能更加生動具有可操作性。比如,這個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寫乙個擴充套件方法 接下來,...