買書捐殘盟

2012年7月8日 星期日

撲克牌洗牌機

久違了,好久沒有新的idea,今天寫一篇關於利用NXT做撲克牌發牌機。



基本上,把撲克牌放兩邊,模擬我們人的手洗牌的樣子。
而機構本身利用輪胎來推進撲克牌至中間的凹槽,馬達轉動的速度無需過快,以免撲克牌卡紙而破壞了牌紙。

且程式也止不過幾行,其中主要用以啟動馬達轉動的程式碼:

OnFwd(OUT_AB,50);

以下是洗牌機的影片片段:
video

2012年4月13日 星期五

使用matlab開啟Excel檔案,讀取數據資料

matlab當需要開啟外部資料,例如excel檔案時,使用的指令:
1. importdata('filename') -->filename就是你要指定的檔案名稱,包含副檔名
例如,欲打開一個檔名為data.xls,則指令為importdata('data.xls')
2. xlsread('filename')-->filename是你要指定的檔案名稱,副檔名預設為xls


有時操作者在程式執行期間,想切換開啟不同的xls檔案名稱,而不想重新啟動程式,可以使用input指令。下列為部分片段程式:
file_name=input('Open filename:')
file_data=xlsread(int2str(file_name))


如此,即可由操作者自行輸入檔案名稱,如果檔名以數字命名,記得做轉換為文字。

2012年2月17日 星期五

Matlab解聯立方程式

matlab功能強大,對於工程解題更是他的強項。多年來,我對matlab總有一份眷戀,畢竟真的很好用。

ok,回到正題,因想到解聯立解,所以找一找網路上對matlab解聯立解的方法,找到一個方法還不錯用:

假設一個聯立方程式:
x+y=2.....(1)
x-y=0.....(2)

以觀察法可以判斷找到x=1,y=1為其解。

而matlab的程式表示方法,假設等號左邊的x,y未知數之係數,看成一個矩陣A,且等號右邊的係數可以看成一個陣列C
簡化上述的表示式,以矩陣可以寫成
AX=C

所以:
A=[1 1
  1 -1]
C=[2
  0]

底下是matlab程式的寫法:
A=[1 1;1 -1];
C=[2;0];
X=A\C

以左除法,即可解出聯立解,其中X得到的答案就是x,y的解。