Tuesday, 8 December 2009

Simple way to pass numeric array from c# to matlab.

This is a follow up screencast on Matlab Neural Network in C# Application (http://baijumax.blogspot.com/2009/05/matlab-neural-network-in-c-application.html),users often face issues with passing array from c# to matlab and based on their feedback I have decided to prepare this
screen cast in which I have shown simple solution to get around with syntactical issues of passing numeric array from c# to matlab by using simple string array.

Sunday, 1 November 2009

Creating simple WPF Multi-Thread application.

This videos shows how to create simple wpf -thread application,gives an overview of how to use "Dispatcher" object in WPF.




Below extension method will allow us to update any controls in thread safe manner.

public static class ControlExtension
{
public static void UpdateControlSafe(this Control control, Action code)
{
if (!control.Dispatcher.CheckAccess())
control.Dispatcher.BeginInvoke(code);
else
code.Invoke();
}
}

Monday, 29 June 2009

Generic InvokeRequired pattern - (C# Multi-Threading)

Tody I read article on InokeRequired patterns posted in code project ( Read Full Article )

I have wrote more generic version of the same ( Less code !!!!! ...clear & crisp...)

public static class ControlExtension
{
public static void UpdateControl(this Control control, MethodInvoker code)
{
if (control.InvokeRequired) {
control.Invoke(code);
}
else{
code.Invoke();
}
}

using 'Control' type param in Extension mentod give us an advantage to call UpdateControl on any control.

for eg:- In the below example I have called 'UpdateControl' extension method on textbox control.

private void btnUpdate_Click(object sender, EventArgs e)
{
Thread th = new Thread(new ThreadStart( () => txtInfo.UpdateControl(Display) ) );
th.Start();
}

private void Display()
{
txtInfo.Text += "Updated";
}

Saturday, 13 June 2009

Using Web Services with MATLAB

This video explains how to consume Web services in matlab.

Note:- use 'createClassFromWsdl' function to generate matlab equivalent proxy class from wsdl.




Code snippet of Currency converter GUI application that is used for this demo,

file name :- CurrencyConverterGUI.m
------------------------------------

function varargout = CurrencyConverterGUI(varargin)
% CURRENCYCONVERTERGUI M-file for CurrencyConverterGUI.fig
% CURRENCYCONVERTERGUI, by itself, creates a new CURRENCYCONVERTERGUI or raises the existing
% singleton*.
%
% H = CURRENCYCONVERTERGUI returns the handle to a new CURRENCYCONVERTERGUI or the handle to
% the existing singleton*.
%
% CURRENCYCONVERTERGUI('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in CURRENCYCONVERTERGUI.M with the given input arguments.
%
% CURRENCYCONVERTERGUI('Property','Value',...) creates a new CURRENCYCONVERTERGUI or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before CurrencyConverterGUI_OpeningFunction gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to CurrencyConverterGUI_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help CurrencyConverterGUI

% Last Modified by GUIDE v2.5 13-Jun-2009 08:58:28

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @CurrencyConverterGUI_OpeningFcn, ...
'gui_OutputFcn', @CurrencyConverterGUI_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before CurrencyConverterGUI is made visible.
function CurrencyConverterGUI_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to CurrencyConverterGUI (see VARARGIN)

% Choose default command line output for CurrencyConverterGUI
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes CurrencyConverterGUI wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = CurrencyConverterGUI_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


% --- Executes on selection change in popupmenu1.
function popupmenu1_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns popupmenu1 contents as cell array
% contents{get(hObject,'Value')} returns selected item from popupmenu1


% --- Executes during object creation, after setting all properties.
function popupmenu1_CreateFcn(hObject, eventdata, handles)
% hObject handle to popupmenu1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: popupmenu controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end


% --- Executes on selection change in ToCurrency.
function ToCurrency_Callback(hObject, eventdata, handles)
% hObject handle to ToCurrency (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns ToCurrency contents as cell array
% contents{get(hObject,'Value')} returns selected item from ToCurrency


% --- Executes during object creation, after setting all properties.
function ToCurrency_CreateFcn(hObject, eventdata, handles)
% hObject handle to ToCurrency (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: popupmenu controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end


% --- Executes on selection change in FromCurrency.
function FromCurrency_Callback(hObject, eventdata, handles)
% hObject handle to FromCurrency (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns FromCurrency contents as cell array
% contents{get(hObject,'Value')} returns selected item from FromCurrency


% --- Executes during object creation, after setting all properties.
function FromCurrency_CreateFcn(hObject, eventdata, handles)
% hObject handle to FromCurrency (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: popupmenu controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end



function convertedValue_Callback(hObject, eventdata, handles)
% hObject handle to convertedValue (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of convertedValue as text
% str2double(get(hObject,'String')) returns contents of convertedValue as a double


% --- Executes during object creation, after setting all properties.
function convertedValue_CreateFcn(hObject, eventdata, handles)
% hObject handle to convertedValue (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end


% --- Executes on button press in Convert.
function Convert_Callback(hObject, eventdata, handles)
% hObject handle to Convert (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

%instantiate object
service = CurrencyConvertor;

fromCurrency = getSelectedValueFromPopupMenu(handles.FromCurrency);
toCurrency = getSelectedValueFromPopupMenu(handles.ToCurrency);

value = ConversionRate(service, fromCurrency,toCurrency);
set(handles.convertedValue,'String',value);

function [selectedValue] = getSelectedValueFromPopupMenu(handle)
contents = get(handle,'String');
selectedValue = contents{ get(handle,'value') };

Friday, 29 May 2009

Creating GUI applications with Matlab.

Quick start to matlab gui programming using 'guide'.




Note:- It is easy to convert matlab GUI applications to windows standalone executable and run the converted executable (.exe file) in any machine in which matlab is not installed.For details check 'deploytool' matlab documentation.

Monday, 18 May 2009

F# - New language for scientific computing From Microsoft.

Last Saturday I have got opportunity (or time :-)) to watch a screencast by Luca Bolognese on Functional language F# from MS.Watch the videohere.

My first impression on F# is that difficult syntax as compared to matlab but I believe there will be lot more language enhancements in coming release. Huge promise for Quant. Finance applications as we can easily integrate F# libs with other dotnet languages.

You can download F# September 2008 CTP from here

I will try to update my blog with some Quant. Libs written in F#.

Monday, 4 May 2009

Matlab Neural Network in C# Application

Part 1 gives an overview of Matlab Network manager . This screen cast shows how to create XOR network using Matlab Network Manager.




This part explains how to use Matlab Neural Network in c# windows application and limitation of Matlab complier with respect to 'sim' function.

Note:- Don't forget to watch next episode of this series, in which I have explained how to get around with 'sim' function compiler limitation and call Neural network from c# windows application




In this part I have explained how to get around with 'sim' function compiler limitation and call Neural network from c# windows application.