發表文章

目前顯示的是 2020的文章

電影 : 刺激1995 、 The Shawshank Redemption

圖片
         一部1994年上映的美國電影。台灣譯作刺激1995,罕見的,我更青睞中國的翻譯, 肖申克的救贖。 (有雷慎入)          因冤案入獄的銀行家安迪,進入 肖申克 監獄開始了新的生活。         在監獄受到制度的壓迫,獄友的傷害,也遇到了一生的摯友 瑞德。         某一次打掃屋頂的工作中,安迪冒著被跳樓自殺的危險,換取願意幫助警衛長節稅的機會,以及夥伴們享受一箱冰啤酒的特權。         典獄長聽聞此事,特地來會會安迪這個人物。你最喜歡聖經哪個章節呢?典獄長問。 Watch  therefore, for  you  do not  know  when the  master  of the house is  coming。安迪回答。                  典獄長相當滿意,也分享了自己喜歡的部分。 I am the light of the world. Whoever follows me will never walk in darkness, but will have the light  of life.         自此,表面上安迪獲得了圖書館管理員的工作,私底下兼職為全監獄的警衛逃稅,並為典獄長洗錢。         又一次,安迪利用全監獄的廣播播放費加洛的婚禮。就算被關1個禮拜單人禁閉也無所謂。                                                               出來後,和朋友們分享。有些東西,像是音樂 (或是數學)......          You need it so you don't forget. Forget that there are places in the world that they aren't made out of stone. There are something inside that they can't get to, that they can't touch. That's yours.                  年資大的瑞德潑安迪冷

基本電腦概論-數碼、文字碼

(一)數碼:   1.BCD碼   2.BCD碼變形   3.Gary Code (二文字碼:   1.BCDIC   2.EBCD   3.ASCII (三)錯誤檢查碼:   1.同位元檢查碼   2.CRC   3.漢明碼 BCD碼:用4個bits來表示10近物中每一位的值 6種組合不用10~15 例:(23)10=(00100011)BCD 變形 8 4 -2 -1與BCD+3 格雷碼 適用於資料傳輸 10進位轉Gray Code 1.先將10進位轉2進為 頭補0 相同:0 相異:1 例:(5)10=(0101)2 00101=(0111)Gray Gray Code轉10進位 最左邊留下,之後分別與下一位做e OR 例:(1100)Gray 1100 (1000)10 最左留下為1 1跟1為0 0跟0為0 0跟0為0 ASCII 8bits組成 A=(65)10=(41)16 a=(97)10=(61)16 0=(48)10=(30)16 0<A<a RBCDIC編碼順序與ASCII相反 錯誤碼的偵測與更正 同位元檢查 偶同位元 傳送bit為1須為偶數  奇同位元 為1須為奇數 只能做error detect CRC(Cycle Redundancy Check) Ex :Assume that the sender sends the codeword 1101101 , please find the CRC code and Codeword for a generator polynomial x^3 + x^2 + 1 Step1.  取得餘數  &  被除數 所以,除數為 1101 被除數 : 1101101 (codeword) +最高系數是多少,就補多少個0(就是看最高次方是誰,就補多少個0,在這邊我們最高次方式3次方,所以就得補3個0。 所以,被除數為:1101101000 Step2:使用除法 使用說明: 一般的除法是減法,但是在CRC是需要用XOR,並且遵守下列三個規則。 使用XOR 一次下來三位 遇到第一位為1的時候,就用1去除,反之遇0則用0去除。

Python-PyQt版面配置與嵌入即時動態圖

圖片
控制板讀到的訊號需要即時顯示,因此我用PyQT寫了個GUI範例,並且能即時更新圖表,畫圖的部分採用matplotlib。 上面圖表就是程式碼會顯示的即時圖,右邊是即時產生sin與cos值,左邊是cos、sin分別在x,y軸產生出來的圖形。 import sys import PyQt5 import time import numpy as np from matplotlib.backends.qt_compat import QtCore, QtWidgets, is_pyqt5 if is_pyqt5(): from matplotlib.backends.backend_qt5agg import ( FigureCanvas, NavigationToolbar2QT as NavigationToolbar) else: from matplotlib.backends.backend_qt4agg import ( FigureCanvas, NavigationToolbar2QT as NavigationToolbar) from matplotlib.figure import Figure class ApplicationWindow(QtWidgets.QMainWindow): def __init__(self): super().__init__() self._main = QtWidgets.QWidget() self.setCentralWidget(self._main) layout = QtWidgets.QGridLayout(self._main) #新增圖表 dynamic_canvas_total = FigureCanvas(Figure(figsize=(5, 3))) dynamic_canvas_x = FigureCanvas(Figure(figsize=(5, 3))) dynamic_canvas_y = FigureCanvas(Figure(figsize=(5, 3)))

Python-使用pyserial與控制板溝通

最近在研究個專案,從sensor即時讀取資料透過USB傳到電腦進訓練好的分類模型進行損壞類別判斷並用GUI呈現,而板子與電腦傳輸使用到python的pyserial實作。 一開始先到裝置管理員確認COM PORT若讀不到記得刪除然後更新驅動,並確認板子的傳輸速率。 這邊我採用一發一收,我發個訊號給板子,板子才會把讀到的電壓值給我。 這範例他一次發送就是18筆bytes,扣除頭尾作為一次發送的判斷,其餘每兩筆可轉換成一組電壓值。 因此我兩組資料要一起做個計算還原電壓值,公式可參考註解(高位元加上低位元*3.3伏特/4095 2的16次方位元) 每個人板子寫的邏輯跟資料都不一樣,所以可單純參考對板子發送資料與接收資料。 import serial import time COM_PORT = 'COM15' # 指定通訊埠名稱 BAUD_RATES = 19200 # 設定傳輸速率 ser = serial.Serial(COM_PORT, BAUD_RATES) # 初始化序列通訊埠 try: while True: values = bytearray([3]) #板子收到3會對電腦傳一組資料 ser.write(values) #發送資料跟FPGA要值 i = 0 high = 0.0 total = 0.0 while ser.in_waiting: # 若收到序列資料… data_raw = ser.read(1) # 讀取一筆 共18筆扣掉1跟18 每兩筆可轉換成一組電壓值 data = int.from_bytes(data_raw, "big") # byte to int print('接收到的資料:', data) i = i + 1 print(str(i)) if(i == 1): #去頭 continue if(i == 1

Altera DE0 - Nano開發 ADC應用

圖片
前言:      最近因為做實驗的關係,作者接觸了Altera DE0-nano開發版,發現這個板子雖然小小一塊但功能卻很齊全的,包含了加速計、8個led燈示、四段指撥開關、兩個復歸按鈕、8通道12bitADC以及多達80個GPIO(裡面涵蓋Vcc及Gnd)可以去使用,而本文章是使用其ADC讀取感測器數值的應用本文章是使用其ADC讀取感測器數值的應用     下圖為板子的正反面照片,ADC位置在背面(圖b)                                        圖a. 正面照                                   圖b. 背面照 圖c. Pin腳圖     DE0-Nano使用的ADC晶片為 ADC128S022 ,其通訊使用的是SPI進行資料交換如下圖所示 圖d. ADC128S022 Serial Timing Diagram     依據圖d的通訊圖可以看出當CS Low時,其SCLK以16個為一組DATA的資料,為了配合撰寫程式,本文章以0至15來取代1至16,其中資料的第0個與第1個不列入參考,而第2~4為選擇ADC Channel的Address(由Din腳為提供),最後第4~15為晶片所量測到的電壓數位訊號(由Dout送出),其訊號範圍為0~3.3伏特(數位訊號為0~4095)。 實作:     SCLK: library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity Divider100 is generic ( CLK_DIV : integer := 100 ); port( reset: in std_logic; CLK : in std_logic; enable : in std_logic; SCLK_RISING : out std_logic; SCLK_FALLING : out std_logic ); end Divider100; architecture arch of Divider100 is

[投資]布林通道原理與應用

圖片
布林通道(Bollinger Bands)是一種股票技術分析的概念,這篇會介紹其原理與應用。 介紹之前還是要強調對小散戶來講: 基本面是求穩,了解公司過去營運狀況、獲利情形、公司治理等等(歷史表現) 籌碼面是去猜未來,猜測主力買、法人買可能有利多等等。 技術面則運用統計、數值分析等方法來猜測走勢。 綜合三面向來選股分析盡量健全越好。 回來討論布林通道,其實就是平均值與標準差的概念而再股票的概念是這樣稱呼的: 上線:移動平均線+2標準差 中線:移動平均線(時間可以為10、20、月等等,其實就是X日平均值的概念) 下線:移動平均線+2標準差 以統計常態分布來看正負2標準差大概可包括95.4%的資料,因此可認為未來走勢在這區間內走動機率很高,因此 布林通道 是以 X日移動平均線為中心  上下各 2 個標準差  為範圍的一個軌道操作方式 布林通道開口與縮口 開口表示布林通道的區間變大,反之縮口則是變小。 開口 概念就是資料離散程度變大,離散程度變大表示X日內的 股價有大幅上升、大幅下降或有巨幅震盪 。 縮口 概念則相反即資料離散程度變小,變小則表示X日內的股價相對平穩,可解釋為 正在盤整 。 以下圖為例,可以看到股價一路往上爬時,即開口;後來逐漸收穩進入盤整格局,布林通道就縮口了。 買賣訊號 1.股價碰到上線,賣出訊號 當你買進股票或做多股價碰到上軌道,要再漲的機會就很小這樣我們可以選擇賣出 2.股價碰到下線,買進訊號 當股價碰到下軌道要再跌的機會就不是那麼大那就給我們買進的理由 結論: 實際操作買進訊號,若基本面與籌碼(依作者的觀點這兩面都比技術面重要,因為單用統計的概念來操作就等於用後照鏡來開車一樣,只是看歷史資料)都不錯,且股價向上突破下線或中線以下應該都是個不錯的進場點。 Reference:HiStock嗨投資理財社群、cmoney投資小學堂、wikipedia

Python turtle畫雪花

圖片
Python turtle是python內建的繪圖套件,在資料分析的領域較少使用。無意間得知這套工具,冬天來畫片雪花練習一下。 一開始宣告套件 設定背景顏色 定義branch()方法,裡面用雙層迴圈來畫分支 forward就是向前方移動 p 個像素距離,backward向後方移動 p 個像素距離,right與left為順逆時鐘轉的度數,分支畫完後轉45度直到畫完一片雪花。 畫完長這樣 from turtle import* turtle.bgcolor("#FFF0F5") speed(0) colormode(255) def branch(): for i in range(3): for i in range(3): forward(10) backward(10) right(45) left(90) backward(15) left(45) right(90) forward(45) for b in range(7): for c in range(6): x=-400+c*250 y=350-b*120 penup() #提筆 setposition(x,y) #確認座標 pendown() #下筆 begin_fill() if b%2==0: color(88,76,208) elif b%3==0: color(83,217,255) else: color(168,216,255) for i in range(8): branch() left(45) end_fill() hideturtle() done()

[投資]慧洋-KY(2637)台灣散裝航運龍頭

圖片
台股萬二,台積帶頭領盤,總會有遺漏的股票沒被注意到,這篇要來分享台灣散裝航運龍頭,慧洋這間公司,龍頭股、配息穩定或許是存股的另一種選擇。 公司基本資料 1.沿革與背景  慧洋-KY(2637)公司創立於1999年,登記為開曼群島商,為台灣最具規模的散裝船隊船東之一,董事長藍俊昇為台灣散裝-四維航(5608)藍俊德的胞弟。 公司維持船隊的輕齡化,船型包含了海岬型、巴拿馬極限型、超級極限型、輕便極限型、輕便型、多功能型、駛上駛下型、原木船、木屑專用船、貨櫃船、雜貨船等多種船型 ,並和日本如今治、常石、大島、名村、村上秀等一流船廠的長期合作。  2.營業項目與產品結構  公司擁有的船隊中包括散裝輪、原木船、雙層甲板船、多功能船、roro船及貨櫃輪,屬中小型船舶商,船隊平均年齡約5.6年。公司一方面積極擴充船隊,一方面淘汰耗油船隻,以提高整體船隊的競爭力。 2017年,租賃占營收比重93%,運費收入占4%。 由於集團船隊之不同船型分散於各航線經營,以減少因經濟景氣循環變動所產生之影響。在散裝船之市場中,以貨物選擇多樣化、航線靈活的輕便型(handy size)、輕便極限型(handymax)為主力,而貨櫃船(container)所佔比重約在全體船隊中10%以下。其中3萬噸以下的輕便型仍缺船,故運價穩定。 產業面 散裝航運以運載民生大宗物資與工業基本原料,如鐵礦砂、煤炭棉花及穀物、肥料等。一般而言,散裝航運業的 傳統旺季為每年11月至次年4月 ,夏天則是淡季。影響散裝航運景氣的重要因素,除了天災,貿易傾銷法令、外交政策與油價都是影響散裝航運景氣的重要因子,散裝船運價指數為影響業者獲利的重要指標,依船型的不同,散裝航運指數可分為波羅的海海岬型航運指數(BCI)、波羅的海巴拿馬型航運指數(BPI)與波羅的海輕便航運指(BHI),波羅的海運價指數(BDI)是以上三種指數的平均,亦為整體散裝航運獲利的重要觀察指標。 影響散裝航運運費與船商東利潤的最大因素為散貨市場需求與全球大宗物資貿易量 ,過去因景氣不佳,全球大宗物資原物料價格積弱不振,連帶使得散裝航運價格一蹶不振,在市場供給過剩以及船商削價競爭,致使船商大幅虧損,許多小型船東、船廠倒閉,船舶閒置無用武之地,致使拆船量大增;表示供過於求的現象正逐漸改善。且就船噸來看, 2019年仍是需求增長率