2010年7月30日

maxima

符號(symbol)運算是一個很重要的賣點,不同於octave的是,octave比較重視數值運算,以就是知道公式的時候作運算,但是maxima則比較像是推導公式,比方說把(a+b)^2展開為a^2+2ab+b^2,在octave則是帶入a,b然後給出結果
雖然兩者有些重複的功能,也都可以達到對方一些功能,比方說octave也有symbol運算的功能,可是完整度跟運算速度會略慢於maxima

2010年7月25日

我看mobile device

最近看到消息說,HP打算放棄M$ WP7,但來M$真的有點拉警報囉,在mobile上的OS一直是進步有限,如果不好好的痛定思痛的把核心跟大家想要的東西推上來,真的會很慘
手邊有個朋友是作手機的,他們開發過M$的系統也開發過android,他跟我說:跟android比起來,M$真的是很不穩定。看來真的是外加一罪囉

所以我認為M$在mobile devcie上的三大問題就是:經驗移植、穩定度、雲端
M$我覺得一直以來都是想要把肥大的應用程式強迫放到mobile device上面,搞得很詭異,跑不動不然就是一些相容性有大大的問題,相對android就輕巧很多,把瀏覽器上操作方式巧妙的套到mobile device
穩定度一直是M$的痛,在6版跟之前,大概"戳屁屁"(reset)是每個M$手機操作者必須要做的事情,且是每隔一陣子就需要,跟舊版的OS常常不定時當機跟需要重灌是一樣的  囧rz
最後就是雲端,由於M$雲端並不如google成熟,所以整體的配合程度真的差很多,如果說要專打企業應用,拜託就像是黑莓機一樣吧,弄的上不上,下不下的

========================
說到雲端,我認為M$依舊相當有機會,因為google在某些應用,如google documents目前跟M$比較起來還是有一段差距,在操作跟排版上還是有些不大順暢,但是如果M$還沒有自覺讓google提出某種可以離線且方便使用的應用軟體,同時提供某種雲端跟區域端的整合方案的話,這是google恐怕快要無力回天,剩下遊戲市場可以擋著

以我目前的感覺,雲端計算對我比較有吸引力的方面到不如說是雲端儲存,應用程式只有一些非靠著網路不行的才會想使用,比方說email跟blog,如果是其他如文件我本身還沒有打算使用,甚至科學計算也不想。應用程式的問題只要卡在web的呈現方式並不如本身電腦的流暢還有就是現有網路頻寬的問題,網路頻寬在成熟的國家會慢慢解決,呈現方式可能要仰賴推出一些離線版本而非單純的瀏覽器材會方便了

2010年7月12日

Octave--sort function

matlab排序的方程式,格式如下
[SA,indexes]=sort(A,'descend')
A表示排列前一維陣列,SA表示排列後的結果,可以指令要升幕或者降幕排列,還有回傳一個有用的indexes交換過後的陣列,表示A的某個index元素被調換到SA的相對應的index,直接看圖說故事

2010年7月8日

Octave--建立圖形(grahp)

假設圖形(graph)是由二維座標構成,儲存在points變數中,為一個N*2的矩陣,以半徑為r的距離做連線
for j=1:N
    for k=1:N
        if norm(points(j,:)-points(k,:))<=r
            plot([points(j,1) points(k,1)],[points(j,2) points(k,2)]);
        end
    end
end

這樣只有線條,如果要在補上資料點可以再補上plot(points(:,1),points(:,2),'*')

2010年7月6日

Octave--直接執行script file

一般而言Octave的附檔案名稱為oct,但是沒有強制性,要直接執行script file必須要有執行權限
chmod  +x xxx.oct
然後要在檔案內容最前頭加上類似shell script的octave執行路徑,如#!/usr/bin/octavee
如果有圖形輸出,要另外加上print -dpng output.png (-d是device的意思, png是 圖檔格式)

在執行的時候,使用以下參數
octave –persist test.oct
就可以保留住圖形的輸出

Octave--disp function

disp是一個最簡單的輸出函數,不過有很大的限制是,他只能夠處理一個變數,所以在使用上比較需要一些轉換,如果要輸出比較複雜的格式,一般使用fprintf,如果有使用過C就不陌生了,格式如下
disp(X)
看不出所以然來,舉個例子來說,如果說要輸出單一字串很簡單
disp('hello world!!')
這樣就輸出hello world字串,但如如果要輸出身高多少,就必須要把它變成一個array,如下面
disp(['height:' num2str(height)])
因為要是字串陣列,所以必須把數值的變數height變成字串,需要借用到num2str

Octave--zeros function

建立一個全為0的矩陣,至少維度2以上,格式如下
B=zeros(n)
B=zeros(m,n)
B=zeros([m n])
B=zeros(m,n,p,...)
B=zeros(m,n,...,classname)
如果使用單一參數,那就是建立一個nxn的矩陣,其他就是跟參數多寡建立,也就是可以建立多維度矩陣
中間可以使用[m n]的方式則可以配合類似size函數使用,比方說為A建立一個一樣大的矩陣作B為暫存空間
B=zeros(size(A))
最後一個表示指定特定型態,如double或者int

Octave--norm function

norm是泛指一般長度的單位,常用的Euclidean distance,也就是2-norm,所以norm的格式為
norm(A,p)
其中p就表示為多少norm,定義如下,如果不給定p預設為2-norm
Returns sum(abs(A).^p)^(1/p), for any 1 <= p <= ∞.
一般infinite norm使用norm(A,'inf')定義如下
Returns max(abs(A)).

2010年7月5日

Octave--bsxfun function

這個函數還不大能掌握,格式為
C=bsxfun(fun,A,B)
將B透過fun作用在A上,然後回傳結果,比方說我們打算把A中每一列減去平均值,B代表平均值,然後將結果回傳到C矩陣內
以上次mean的例子來說,bsxfun就可以寫成如下
其中第一個參數常用的有下列這些

Octave--mean function

octave中的mean指令,格式為mean(A, dim)

第一個參數為矩陣,若是單一向量則回傳單一平均值
若是矩陣,則參考第二參數dim,dim為1則回傳行向量平均值,若dim為2則回傳列向量平均值
一般預設為1

2010年7月2日

電子書是誰的?

或許比較少人想到這件事情,現在有些網路上面開始販售電子書,但是採用的是雲端模式,這樣的好處是,電子書只要有網路,讀者可以隨時隨地使用
但是問題來了,以這樣的模式,電子書是誰的?過去傳統模式,只要讀者拿著一本書,那本書的所有權明顯屬於讀者,著作權屬於作者,非常明顯,跟販售通路以及出版社沒關係
但是如果電子書的話,可能書本屬於販售通路,所以如果販售通路倒閉,那就一本書都沒有了不是嗎?也就是說,購買電子書等於只有買到閱讀的權力?
雲端計算其實也面臨到類似的問題,安全性,以前一個人被hack是一個人的事情,有任何理由相信一個雲端的安全性比個人電腦好?這只是一個感覺罷了,看看網路上很多著名網站都有出現個人資料外洩等等的問題,請問你還相信雲端嗎?
雲端的資料不會隨著公司倒閉嗎?一個好的雲端會搭配著一堆服務,如果公司被合併,這些服務會被保留嗎?如果沒相對的服務搞不好這樣的資料就跟垃圾沒兩樣了Orz