2015-06-18 39 views
0

我可以在MATLAB中的內存數據集(或cellarray,或結構等)上進行SQL風格的查詢嗎?MATLAB中的SQL風格查詢

爲什麼我問,當我想對1000行數據中的每一行執行不同的操作時,有時我不想與數據庫交談1000次。相反,我寧願從數據庫中讀取所有1000個數據,並在MATLAB中對它們進行操作。

例如,我已閱讀下列出從數據庫中的:

age first_name last_name  income 

30 Mike  Smith   45 

17 David  Oxgon   17 

22 Osama  Lumbermaster 3 

現在我想找出是25歲以下的人的全名,我知道該怎麼做它,但是像這樣的SQL有沒有像乾淨和直觀的語法?

SELECT first_name + ' ' + last_name AS name FROM people WHERE age < income 
+0

請描述你的具體查詢 – Dan

+0

是一個單元格數組還是表格? – Dan

+0

在這種情況下,一張表。我一直在尋找是否有某種乾淨的語法,比如SQL或LINQ。我的意思是,在MATLAB中,不同的事物形式各不相同。例如,「equal」是數字「=」,但必須使用strcomp()。而且mat和cell之間也有區別,這使得基本上具有相同邏輯的語句採取各種形式。它不僅使閱讀和思考變得更加困難,而且使得代碼更加通用和可擴展。 – Indominus

回答

1

在文檔頁面Access Data in a Table(見例如Index Using a Logical Expression)它表明如下你的例子可以實現:

MyTable({'first_name','last_name'}, MyTable.age < MyTable.income) 

這些文檔不具體解釋如何合併姓名變成一個變量,但我相信這很容易。試一試,讓我們知道你是否得到它。

+0

謝謝丹!肯定會試試看,當我再次將MATLAB放在手上時再回來:) – Indominus

+0

我希望不需要再次指定表名,因爲它已經是apprent。理想情況下,它會是這樣的:MyTable({'first_name','last_name'},年齡<收入)。這樣,如果表名很長或者有多個過濾標準,則語法仍然可以簡潔。然而,似乎這不是SQL以外的存在(也許是LINQ.Net),甚至不在Python大熊貓。我想這跟我們一樣好。接受你的回答,丹,對超長拖延道歉。 – Indominus