2013年5月1日 星期三
6 sigma上課筆記 - Interactions Plot
人視視覺上的動物,所以由圖形上來了解趨勢會比一堆數據來的容易些,在6 sigma上課筆記 - 二維表格轉Minitab格式 中,我們想知道Temp和Press對yeild有哪什麼影響,正交互作用?逆交互作用?以及有沒有交互作用?
在Minitab中可以用Interactions Plot功能來判斷。基本判斷方法:如果圖形呈現平行,就是沒有交互作用。如果圖形呈現不對稱(有增強作用)或交叉(互逆作用),就是有交互作用。
Stat > ANOVA > Interactions Plot
由圖可知有交互作用。
6 sigma上課筆記 - 二維表格轉Minitab格式
上課的時候老師有說到,我們常常拿到的表格是二維的,最好把他轉成統計上常用的格式Stack Rows(switch rows to columns),為什麼要這種格式呢?因為這樣如果增加實驗因子,整個表格不會有太大變動。
假設實驗數據如下:
我們可以在Minitab 14中執行Data > Stack > Rows
因為Press 1/Press 2這兩column的資料是要堆疊的,所以放置在to be stacked。
Store stacked data in是堆疊後的資料,我們放在下一個空白的 column,並且命名為yield。
Store column subscripts in是column這個factor,我們是Press 1/Press 2,所以我們命名為Press。
Expand the following columns while stacking rows就是row這個factor,我們是Temp 1/Temp 2,所以我們命名為Temp。
最後就是跑出來的worksheet了
2012年8月4日 星期六
An Introduction To The SQLite C/C++ Interface
為了能夠用SQL將資料由資料庫撈出,我們必須認識兩個主要的Object:
- The database connection object:sqlite3 執行sqlite3_open()之後,就會得到該object,感覺類似open之後的file descriptor。
- The prepared statement object:sqlite3_stmt 把SQL轉成bytecode,但是還沒真正被執行。請參考Compiling An SQL Statement/To execute an SQL query, it must first be compiled into a byte-code program using one of these routines.
An instance of this object represents a single SQL statement. This object is variously known as a "prepared statement" or a "compiled SQL statement" or simply as a "statement".
一個常見的SQLite pattern為:
- sqlite3_open():取得database connection object。
- sqlite3_preapre() :取得prepared statement object。
- sqlite3_step():執行prepared statement object。
- sqlite3_column_<type>():將sqlite回傳回來的資料,轉成對應的type取出。
- sqlite3_finalize():釋放prepared statement object。
- sqlite3_close():釋放database connection object。
#include <iostream> #include <sqlite3.h> #include <cstdlib> #include <assert.h> using namespace std; int main(int argc, char** argv) { sqlite3 *conn; sqlite3_stmt *statement; // SQL Statement Object int ret = 0; int cols; // This routine opens a connection to an SQLite database file // and returns a database connection object. ret = sqlite3_open_v2("hello.db", &conn, SQLITE_OPEN_READONLY, NULL); if (ret) { cout << "can not open database\n"; exit(0); } ret = sqlite3_prepare_v2(conn, "select * from hello", -1, &statement, NULL); if (ret != SQLITE_OK) { cout << "We did not get any data\n"; exit(0); } cols = sqlite3_column_count(statement); for (int col = 0; col < cols; col++) { cout << " " << sqlite3_column_name(statement, col); }; cout << endl; while (true) { ret = sqlite3_step(statement); if (ret == SQLITE_ROW) { for (int col = 0; col < cols; col++) { switch (sqlite3_column_type(statement, col)) { case SQLITE_INTEGER: cout << " " << sqlite3_column_int(statement, col) << " "; break; case SQLITE_FLOAT: cout << " " << sqlite3_column_double(statement, col) << " "; break; case SQLITE_TEXT: cout << " " << sqlite3_column_text(statement, col) << " "; break; case SQLITE_NULL: cout << " " << "NULL" << " "; break; } }; cout << endl; } else if (ret == SQLITE_DONE) { cout << "done" << endl; break; } else { cout << "ret:" << ret << endl; break; } } sqlite3_finalize(statement); sqlite3_close(conn); return 0; }
sqlite3_exec()是將sqlite3_prepare_v2(), sqlite3_step()和 sqlite3_finalize()包裝起來的API,其原型為
int sqlite3_exec( sqlite3*, /* An open database */ const char *sql, /* SQL to be evaluated */ int (*callback)(void*,int,char**,char**), /* Callback function */ void *, /* 1st argument to callback */ char **errmsg /* Error msg written here */ );
- 第二個參數要執行的SQL statement。
- 第三個參數是callback function。每一個row都會呼叫該callback一次。
- 第四個參數是要傳給callback function的data。
- 第五個參數就是發生錯誤時,儲存錯誤資訊的指標。
#include <iostream> #include <sqlite3.h> using namespace std; int callback(void *data, int column, char **value, char **name) { int i; cout << (char *)data << endl; for (i = 0; i < column; i++) { cout << name[i] << ":" << (value[i] ?: "NULL") << endl << flush; } return 0; } int main(int argc, char** argv) { sqlite3 *conn; int ret = 0; char *errmsg = NULL; char data[] = "brook"; // This routine opens a connection to an SQLite database file // and returns a database connection object. ret = sqlite3_open_v2("hello.db", &conn, SQLITE_OPEN_READONLY, NULL); if (ret != SQLITE_OK) { cout << sqlite3_errmsg(conn) << ".(" << ret << ")" << endl; exit(0); } ret = sqlite3_exec(conn, "select * from hello", callback, data, &errmsg); if (ret != SQLITE_OK) { cout << "We did not get any data. " << errmsg << endl; sqlite3_free(errmsg); } sqlite3_close(conn); return 0; }
訂閱:
文章 (Atom)
熱門文章
-
轉自 http://www.wretch.cc/blog/redsonoma/14021073 基本概念: 1> tty(終端設備的統稱): tty一詞源於Teletypes,或者teletypewriters,原來指的是電傳打字機,是通過串行線用打印機鍵盤通過閱...
-
Work queue提供一個interface,讓使用者輕易的建立kernel thread並且將work綁在這個kernel thread上面,如下圖[1]所示。 由於work queue是建立一個kernel thread來執行,所以是在process context...
-
(V)將介紹file operations中的ioctl。ioctl的prototype為: int (*ioctl) (struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg); ...
-
這兩天電腦的word忽然都不能存檔,即便是另存新檔也不行,最後都只能放棄修改檔案,即便重新安裝過或者更新成2007也都不能存檔,最後就乖乖的google一下,原來是暫存的資料夾不存在,按照以下方式就可以解決了。 資料來源: word 2003不能存檔問題 編輯機碼的(reg...
-
System Call在HW和user space提供一層抽象層,主要目的有: 為user space提供硬體抽象層。比如,讀取檔案時,不用管檔案所在的媒體類型與檔案儲存類型。 System call能確保系統的安全與穩定。避免user space的無意或惡意的破壞。 ...
-
在kernel中建立thread可以使用kthread_create(),建立一個task,然後在調用wake_up_process(task)讓task真正的運行,如果要kill一個kthread可以使用kthread_stop()。 在kernel中,將kthread_cr...
-
Linux module練習手札I紀錄如何撰寫一個簡單的module,並且編輯它,以及load和unload一個module。 write a module #include <linux/init.h> #include <linux/module.h...
-
幾乎任何使用 TCP,UDP或UNIX-domain socket的動作都可以用nc來達成,常見的功能如。 simple TCP proxies shell-script based HTTP clients and servers network daemon testi...
-
很多人心中都有過一個問題 What is the difference between Platform driver and normal device driver? ,簡單的來說Platform devices就non-discoverable,也就是device本身沒辦法...
-
組成元件 要能正確顯示資料,必須包含資料倉儲(Store),資料欄位的定義(ColumnModel)。 首先我們先定義資料欄位: var cm = new Ext.grid.ColumnModel({ {header: 'Name', dataIndex...