<> ====== Database ====== ===== Open a DB connection ===== ==== postgres ==== #!highlight matlab connection = database('mydb', 'username', 'password', 'org.postgresql.Driver', 'jdbc:postgresql://192.168.1.2:5432/my_database'); ==== sqlite ==== #!highlight matlab % establish variables path = '/home/myhome/routes/'; file = 'routes_20110101.sqlite'; databaseName = ''; %leave blank userName = ''; %leave blank password = ''; %leave blank driver = 'org.sqlite.JDBC'; %downloaded from http://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC databaseURL = sprintf('jdbc:sqlite:%s%s', path, file); % create connection conn = database(databaseName, userName, password, driver, databaseURL); % test for successful connection if isconnection(conn) % fetch data etc. If you receive an exception when fetching results ??? Java exception occurred: java.lang.IllegalStateException: SQLite JDBC: inconsistent internal state at org.sqlite.RS.checkCol(RS.java:69) at org.sqlite.RS.getColumnCount(RS.java:423) Error in ==> rsmd.get at 55 n = 1:double(getColumnCount(d.Handle)); Error in ==> cursor.fetch at 162 x = get(rs,{'ColumnName';'ColumnType'}); you will need to adjust the return type of the results for Matlab #!highlight matlab setdbprefs('DataReturnFormat','cellarray'); (See the Matlab documentation for details http://www.mathworks.com/help/toolbox/database/ug/setdbprefs.html) ===== Get Column Names ===== #!highlight matlab query = 'select * from blah'; cursor = exec(connection, query); fetch(cursor); names = columnnames(cursor); ====== Date and Time ====== ===== Convert date to String ===== #!highlight matlab datestr(now, 'dd-mm-yy HH:MM:SS') ===== Current Date ===== #!highlight matlab now() ===== Parse a Date ===== #!highlight matlab str = '2010-05-03 20:30:00.0' datenum(str) % ans = 734261.854166667 datevec(str) % ans = 2010 5 3 20 30 0 ====== Figures ====== ===== Formatting ===== ==== Axis Labels ==== #!highlight matlab plot(time,value); xlabel('The Time'); ylabel('The Value'); ==== Date Axis ==== #!highlight matlab time = datenum(time_str); % convert time string to a serial number plot(time, value); % plot datetick('x', 'dd-mm-yy HH:MM:SS','keepticks'); % tell matlab to format the xaxis using the supplied date format ==== Legend ==== #!highlight matlab hold on; plot(x); plot(y); legend('X Values', 'Y Values'); ===== Rectangle ===== #!highlight matlab rectangle('Position', [x,y, width, height], 'FaceColor','r'); ===== Regression Line ===== #!highlight matlab plot(x,y, '.'); %plot data % plot regression line p=polyfit(x, y,1) % fit a polynom of degree 1 regression_y = x* p(1)+ p(2); % if higher polynom degree is used add terms.. eg. for degree2 : y = x.^2*p(1) + x*p(2) + p(3) plot(x,regression_y,'r'); ===== Scatterplots ===== ==== Simple Scatter Plots ==== #!highlight matlab scatter(q, v, 'filled') % or plot(q,v) ==== Scatter plot with color coding ==== #!highlight matlab scatter(q,v,50, relative_error,'filled') % Parameters: x,y,size of point, value to determine color caxis([0, 1]); colorbar() ===== Tweaks ===== ==== Disable annoying popup of plots ==== #!highlight matlab set(figure,'visible','off'); ====== Java in Matlab ====== ===== Use Java Classes from Matlab ===== . Long Article here: http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_external/f4863.html Short story: there are two ways to expose java .jar files to matlab * adding them to a textfile: matlab\toolbox\local\classpath.txt * using the matlab command: javaaddpath Afterwards a java class can be used with its fully qualified name ("java.lang.String") or you can use imports ( _import java.lang.*_ or _import java.lang.String_ ) ====== NaNs ====== ===== Remove NaNs from vector ===== #!highlight matlab x = x(~isnan(x)); ===== Remove rows containing NaNs from matrix ===== #!highlight matlab X(any(isnan(X),2),:) = []; More for example here: http://www.mathworks.com/access/helpdesk/help/techdoc/data_analysis/f0-10104.html#f0-8511 ====== Sorting ====== ===== Sorting structs ===== To sort an array of structs by one value use #!highlight matlab [unused,order] = sort({original_values(:).timestamp}) sorted_values = original_values(order) ====== Webservices ====== ===== Calling a Webservice from Matlab ===== Very simple examples can be found here: http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/ref/createclassfromwsdl.html Alas, real life is never simple. I was unable to find information on how to pass an array of custom objects to a webservice. Some time of googling and trial-and-error later I finally managed to get things working. Here is an example of how to access a webservice which takes an Array of Points ( each point has x and y coordinates) and a Date as parameters: #!highlight matlab % (!) Note that this is just an example on how to use a web service in Matlab. % There are much more convenient wrapper functions available for this specific service! % % create the inputs p1.x=16.38163; p1.y=48.18769; p2.x=16.35889; p2.y=48.18088; points.item=[p1 p2]; % this MUST be called "item" (sic!) or else matlab will create a wrong SOAP message! time.item = {'2009-05-22T12:00:00'}; suggestions.item = {'Mit Strassenbahn'}; % Create and call the Webservice createClassFromWsdl('http://10.101.21.217:8080/service?wsdl'); efa_service=EFAService; getNetworkIds(server, points, time, suggestions)