views:

348

answers:

3

I am working in MATLAB to write a medical image processing/visualization software that uses MATLAB’s image processing toolbox heavily. My choice of using MATLAB was largely based on availability and my comfort in it and my initial goal was to complete my algorithm and test it. I have largely ignored the GUI part – so I have a software that works but with a very clunky GUI (textboxes for entering numbers for most operations).

Now, I am thinking about switching from MATLAB to C /C++/Tcl/other but I am not sure what the best platform is? I need to convert this into a very- fast standalone executable – cannot work with first installing MCR installer and then using the exe as in MATLAB. I saw some suggestions in other posts – about using python/c++ combination.

I am also looking for help from other people who can help me convert my demo code into a professional software. How can I best estimate the time-frame it will require for an experienced software programmer to write the GUI and insert the logic code? Using MATLAB GUIDE, I can write that in a couple of hours with all the basic features, but I am hoping to make this software really slick. I already have a detailed list of features and a layout so there won’t be too many iterations.

Also, is there a category of software programmers like Industrial Designers who can help design the GUI? I am not a creative person and my code/GUIs reflect that. I am not just looking for someone to help with the background color, tool symbols etc. but also to help with how a user may want to use certain features.

I know I am asking too many questions and I appreciate your time.

+1  A: 

Depending on the Matlab version, you can compile you Matlab code into a .Net assembly and combine it with a nice .NET Forms or WPF GUI - should be a nice eye candy.

Hamish Grubijan
Not only .NET, but also Java, C...
Pablo Rodriguez
This helps - I didn't know about compiling the code and then using something else as wrapper. I will look into .NET and Java. Is one more popular than the other?
Aashi
Both of them are great platforms, very complete and mature and with lots of support. I personally feel that Java features are stagnating, but it still has the best side tools. Also, Java works better in different operating systems (I mean, it works without juggling).
Pablo Rodriguez
+3  A: 

Try the deploytool command in Matlab and play around a bit.

I recently made something like this. The interface was made in Java, but the core calculations were perfomed by the MCR. The very first run was a bit more lengthy - it had to decompress the program - but it was blazingly fast later.

I have also tried it with a Simulink model linked to a GUIDE interface. It was faster than Matlab/Simulink themselves.

I personally think that it is worth the install of the MCR if you already have tha algorithms ready. A rewrite is always problematic: you have to test and debug again, and the results may not be exactly the same. So, itt may be easier to have someone do just the user interface and have it linked to the Matlab program.

Yes, there are GUI specialists out there. If you use the MCR strategy you'll just have to let them do their magick.

With regard to time... it depends on the complexity of your software and the amount of eye candy you want to throw in, but let at least a couple of months to have something worthwhile after writing the specs, specially if you have to explain someone else the details.

Pablo Rodriguez
This is very helpful - I will also rather avoid the rewrite of the code and just use help in refining or rewriting the GUI.
Aashi
+4  A: 

FYI, any GUI that you can design using Java Swing is inherently available in Matlab proper. Take a look at my submissions on the File Exchange or http://UndocumentedMatlab.com for examples. This enables you to program a slick-looking Java GUI without needing to learn or program in Java - you can do it all from within your Matlab code. You may wish to consult with a GUI expert to make it appear professional, but you can easily program the GUI yourself. If you compile and deploy, it will work seamlessly on other platforms (Windows, Linux, ...) since Java is cross-platform. As a medical program, it may have the added benefit of not requiring re-submission to the FDA, because you're using the exact same Matlab computation engine for deployment as for development.

The Matlab compiler will NOT increase your performance, since it uses the same computational engine as the development version. So, if performance is really an issue for you, you should try to profile and optimize the performance hotspots in Matlab. If this fails, you may indeed need to convert your application to C/C++ but I would really do that as a last resort - it could cost quite a bit in terms of money, time, accuracy and frustration.

Yair Altman
Well, it seems that you know my situation here. At this time, the performance doesn't seem to be an issue and there are a few things that I can optimise. It is just that I have seen some demos recently of some superslick software where the response time was incredibly fast. But these software were not doing the same things as mine so it is possible that the response time is just related to the operations being performed and not the platform. I checked some of your submissions - I think I need to find a GUI expert in figuring out these things. Many thanks.
Aashi