What is MATLAB COM builder?
来源:互联网 发布:云计算创始人 编辑:程序博客网 时间:2024/05/01 01:18
What is MATLAB COM builder?
The MATLAB COM Builder is an extension to the MATLAB Compiler that enables customers to automatically convert MATLAB applications to Component Object Model (COM) objects. Developers can do modeling and analysis in MATLAB and convert the models to ready-to-use COM objects. These objects can be immediately integrated with any COM-based application.
Building steps
To create a simple COM component in MATLAB, you must pass four steps:
- Creating a project
- Managing m-files and MEX-files
- Building project
- Packaging and distributing the component
A project consists of all the elements necessary to build an application using the MATLAB COM Builder. COM Builder components are COM objects accessible through Visual Basic, Visual C++, Delphi, Power Builder or any other language that supports COM. Each COM object exposes one or more classes. Each class contains a set of functions called methods, corresponding to the original MATLAB functions included in the component’s project.
When creating a component, you must additionally provide one or more class names. The component name represents the name of the DLL file to be created. A class name denotes the name of the class that performs a call on a specific method at run-time. The relationship between component name and class name, and which methods (MATLAB functions) go into a particular class, are purely organizational. As a general rule, when compiling many MATLAB functions, it helps to determine a scheme of function categories and to create a separate class for each category. The name of each class should be descriptive of what the class does.
Creating a project
When creating a new project, enter the MATLAB comtool
command. In this case the MATLAB COM Builder GUI will appear. The following figure shows the GUI.
To change project settings, select Settings from Project menu. Figure 2 shows the project settings dialog:
The component name is name of the DLL file that is built by the build process. The component name must differ from any m-file or mex-file added later to the project. One can add more classes to the project when entering the class name and pressing "Add >>" button.
Note: If your component requires any graphics routine (such as the plot function), you must select Use Handle Graphics Library from Compiler Options.
Managing m-files and MEX-files
After creating the project, it is time to add m-files and mex-files related to the project. You can do this through "Add File" button. Editing or removing a file is very simple. Just select the file and press the "Edit" or "Remove" button! Every object that is added to the project is displayed in project tree.
Building Project
By collecting all of the necessary information, we can build the project. For this reason, select "COM Object" from the Build menu or simply click on the "Build" button in the right pane. The build status pane will show the status of build process. If any error occurs during the build process, the status pane will show it.
Packaging and Distributing the Component
Once you have successfully compiled your models and tested the COM object, you are ready to package the component for distribution to your end users. Choose Component, Package Component to create a self-extracting executable containing these files:
File Purpose_install.bat
Script run by the self-extracting executable .dll
Compiled component mglinstaller.exe
MATLAB math and graphics installer mwcomutil.dll
COM Builder utility library mwregsvr.exe
Executable that registers DLLs on target machines The self-extracting executable is named
. Running the installer on a target machine performs these steps:
mglinstaller
installs the MATLAB C/C++ Math and Graphics libraries.mwregsvr
registers mwcomutil.dll and.dll.
You must repeat this distribution process on each target machine.
Building MATLAB Component
By building a component using the MATLAB COM Builder, a developer can use it from any language or environment that benefit from COM features such as Visual Basic, Visual C++, Access, Excel and so on. The process of integrating components built by MATLAB is easy, but in general you must address seven items in any code written to use the MATLAB COM Builder components:
- Adding Class Methods and Properties to COM Builder Objects
- Adding Events to COM Builder Objects
- Creating an Instance of a Class
- Calling the Methods of a Class Instance
- Processing
varargin
andvarargout
Arguments - Handling Errors During a Method Call
- Modifying Flags
Adding Class Methods and Properties to COM Builder Objects
Class properties allow an object to retain an internal state between method calls. MATLAB COM Builder automatically converts all global variables shared by the M-files that make up a class to properties on that class. By using a global keyword when declaring a variable, the variable is seen as global in the workspace. MATLAB m-files act as the class methods. Each m-file in this situation, define a class method.
Here is an example: A common use of Fourier transforms is to find the frequency components of a signal buried in a noisy time domain signal. Consider data sampled at 1000 Hz. Form a signal containing 50 Hz and 120 Hz and corrupt it with some zero-mean random noise. It is difficult to identify the frequency components by looking at the original signal. Converting to the frequency domain, the discrete Fourier transform of the noisy signal (y) is found by taking the 512-point fast Fourier transform (FFT).
We can develop two m-files, one for adding some noise to original signal and the other for computing power spectrum (a measurement of power at various frequencies). These two m-files are as below:
AddNoise.m
function [n]=AddNoise() global x;
%Original Signal global y;
%Noisy Signal
if (isempty(x)) n = [];
return;
end
y = x + 2*randn(size(x));
%add some noise
subplot(211)
plot(y(1:50))
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('time (milliseconds)')
n=y;
And PowerSpectrum.m
function [m]=PowerSpectrum()
global x;
%Original Signal global y;
%Noisy Signal
if (isempty(y))
m = [];
return;
end
f = 1000*(0:256)/512;
Y = fft(y,512);
Pyy = Y.* conj(Y) / 512;
subplot(212)
plot(f,Pyy(1:257))
title('Frequency content of y')
xlabel('frequency (Hz)')
m=Pyy;
The first one adds some noise and the second, computes power spectrum of the noisy signal, both of the m-files plot their results. As you see we declare two global variables: x, y
. Both of them are considered as properties of Fourier class. We can see them in Visual Basic later. Add both of them to MATLAB COM Builder project (Figure 3):
Now, build the component and open an IDE such as Visual Basic. To see what occured, open a new project and select "References" from Project menu. The following dialog will be displayed, select "Fourier 1.0 Type Library" from list. As you see, the location of the component is where we built the component with comtool
. Figure 4 shows the References of the project:
OK. Click on your VB form add the following code:
Private Sub Form_Load()
Dim myVar As New Fourier.Fourier
Dim x(1 To 601) As Double
Dim t(1 To 601) As Double
m = 1
For i = 0 To 0.6 Step 0.001
t(m) = i
x(m) = Sin(2 * pi * 50 * t(m)) + Sin(2 * pi * 120 * t(m))
m = m + 1
Next
myVar.x = x
Call myVar.addnoise(0, 0)
Call myVar.powerspectrum(0, 0) End Sub
The magic is here. When you are typing, VB shows methods and properties of your component (See figure 5):
You have simply created a COM component from MATLAB!
Press F5 to see results. Figure 6 shows it.
Enjoy!
About A. Riazi
I was born in Shiraz, a very beautiful famous city in Iran. I started programming when I was 12 years old with GWBASIC. Since now, I worked with various programming languages from Basic, Foxpro, C/C++, Visual Basic, Pascal to MATLAB and now Visual C++.
I graduated from Iran University of Science & Technology in Communication Eng., and now work as a system programmer for a telecommunication industry.
I wrote several programs and drivers for Synthesizers, Power Amplifiers, GPIB, GPS devices, Radio cards, Data Acqusition cards and so many related devices.
I'm author of several books like Learning C (primary and advanced), Learning Visual Basic, API application for VB, Teach Yourself Object Oriented Programming (OOP) and etc.
I'm winner of January, May and August (2003) best article of month competetion, my articles are:
- Add GPS Support to your Desktop
- Solving Engineering Problem Using MATLAB C API
- Text2PDF
You can see list of my articles, by clicking here
- What is MATLAB COM builder?
- what is com
- 使用matlab com builder
- What is COM, COM+? (什么是COM, COM+?)
- What is Extreme Programming? [转自www.xprogramming.com]
- C++Builder下调用Matlab的COM总结
- What is what ?!
- what is what?
- Platform Builder: Cesysgen.bat, what happens when a SYSGEN Variable is set?
- What is portal? & What is portlet?
- what is game? what is good game?
- What Is 'SSL'? What Is 'SSH'?
- Introduction to COM - What It Is and How to Use It.(ZT)
- Introduction to COM - What It Is and How to Use It.
- Introduction to COM - What It Is and How to Use It.
- Introduction to COM - What It Is and How to Use It.
- WHAT IS C#
- What is System Administration?
- MFC中,Release版出错Debug版不出错的一个最常见原因之深入剖析
- 非递归实现不重复序列的全排列(二)
- SqlServer中如何按姓氏笔画排序
- 读取电脑CPU序列号、主板BIOS、硬盘的序列号
- matlab的combuilder系列-matlab下做com组件
- What is MATLAB COM builder?
- 迷茫的程序员和中国软件业
- 电脑前的护眼窍门
- 操作电脑:谨防“腕管综合症”
- after install Linux
- C++Builder下调用Matlab的COM总结
- 异国他乡
- 精华Js代码
- 英文版的Visual Studio.Net 2003 快捷键!