рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЪрд░рдг рджрд░ рдЪрд░рдг рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ MATLAB рдХреЛ C # .NET рд╕реЗ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП рдФрд░ рдПрдХ 3D рдкреНрд▓реЗрди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдЖрд╡реЗрджрди рдХрд░реЗрдВред
рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?
рдмрд╣реБрдд рдмрд╛рд░, рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЬрдЯрд┐рд▓ рдЧрдгрд┐рдд рдХреА рдЧрдгрдирд╛ рдХреЗ рдХрд╛рд░реНрдп рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИред MATLAB, рдмрджрд▓реЗ рдореЗрдВ, рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдЙрдкрдХрд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдкреВрд░реНрдг рдХрд╕реНрдЯрдо рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдирд╛рдиреЗ рдореЗрдВ рдХрдордЬреЛрд░ рд╣реИ (рдЖрдк MATLAB рдХреЗ GUI рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рд╕реВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред
рдЙрдкрдХрд░рдг
- Microsoft Visual Studio 2008 SP1
- MATLAB 2010a
- MATLAB рдШрдЯрдХ рд░рдирдЯрд╛рдЗрдо
рдЪрд░рдг 1. рд▓рд┐рдВрдХрд░ рд╕реЗрдЯрдЕрдк
C # .NET рдореЗрдВ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП MATLAB dll- рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд▓рд┐рдВрдХрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЕрд░реНрдерд╛рддред рд╣рдо рдХрд┐рд╕ рдорд╛рд╣реМрд▓ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВрдЧреЗред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ MCR рд░рдирдЯрд╛рдЗрдо (MATLAB рдХрдВрдкреЛрдиреЗрдВрдЯ рд░рдирдЯрд╛рдЗрдо) рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ MATLAB рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП dll рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред рд╕реНрдерд╛рдкрдирд╛ рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ: ... \ MATLAB \ R2011b \ toolbox \ compiler \ рддреИрдирд╛рдд \ win32 \ MCRInstallerред рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд╛рдкрдирд╛, рдЕрдЧрд▓рд╛ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
MATLAB рдХрдорд╛рдВрдб рд╡рд┐рдВрдбреЛ рдореЗрдВ рд▓рд┐рдВрдХрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
mbuild -setup
рдЯрд╛рдЗрдк рдХрд░реЗрдВред рд╣рдо рд╣рд░ рдЪреАрдЬ рд╕реЗ рд╕рд╣рдордд рд╣реИрдВ рдФрд░ рд╣рдореЗрдВ рдЬрд┐рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрд╕реЗ рдЪреБрдиреЗрдВ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдПрдорд╡реАрдПрд╕ 2008 SP1 рд╣реИред рд╣рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рд╣реА рдорд┐рд▓рддрд╛ рд╣реИ:
Please choose your compiler for building standalone MATLAB applications:
Would you like mbuild to locate installed compilers [y]/n? y
Select a compiler:
[1] Lcc-win32 C 2.4.1 in C:\PROGRA~1\MATLAB\R2010a\sys\lcc
[2] Microsoft Visual C++ 2008 SP1 in C:\Program Files\Microsoft Visual Studio 9.0
[0] None
Compiler: 2
Please verify your choices:
Compiler: Microsoft Visual C++ 2008 SP1
Location: C:\Program Files\Microsoft Visual Studio 9.0
Are these correct [y]/n? y
рд╣рдореЗрдВ рдПрдХ рд╣рд░реНрд╖рд┐рдд
Done
рдорд┐рд▓рддрд╛ рд╣реИред рд╕рднреА - рд▓рд┐рдВрдХрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЪрд░рдг 2. рд╣рдо рдПрдо-рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ
рд╣рдо рджрд┐рдП рдЧрдП рд╕реАрдорд╛ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдПрдХ 3D рд╡рд┐рдорд╛рди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдХрд╛рд░реНрдп рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЕрдзрд┐рдХ рд░реБрдЪрд┐ рдХреЗ рд▓рд┐рдП, рд╣рдо рдлрд╝рдВрдХреНрд╢рди рд╡рд┐рд╡рд░рдгрдХ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред
function res=plane(strfunc,vx0,vx1,vy0,vy1,h)
vx=vx0:h:vx1;
vy=vy0:h:vy1;
figure(1)
res=ezsurfc(strfunc,vx,vy);
end
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреЛрдб рдХреА рдЫрд╣ рд▓рд╛рдЗрдиреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рддрд╛ рд╣реИ: рдпрд╣ рдПрдХ рдкреНрд░рддреАрдХ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ (
strfunc
), рд╡рд┐рдорд╛рди рд╕реАрдорд╛ рд╡реИрдХреНрдЯрд░ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдФрд░ рдЕрдВрддрд┐рдо рдорд╛рди (v
x0,vx1,vy0,vy1
), рдЧреНрд░рд┐рдб рдЪрд░рдг (
h
) рдФрд░ () рд╡рд┐рд╡рд░рдгрдХ (рдкреБрдирдГ) рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рд╣рдо рдЗрд╕ рдХреЛрдб рдХреЛ plane.m рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВред
рдорд╣рддреНрд╡рдкреВрд░реНрдг: MATLAB рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдордЭрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ
function
рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЕрдзрд┐рдорд╛рдирддрдГ рдЕрдВрдд рдХреЗ рд╕рд╛рде) рдФрд░ рдПрдХ рдЕрд▓рдЧ рдПрдо-рдлрд╝рд╛рдЗрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЪрд░рдг 3. рдЧрддрд┐рд╢реАрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рд╣рдо рдХрдорд╛рдВрдб рд╡рд┐рдВрдбреЛ MATLAB'a
deploytool
рдЯрд╛рдЗрдк
deploytool
ред рдПрдХ рдирдИ .NET рдЕрд╕реЗрдВрдмрд▓реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ MATLABplane рдмрдирд╛рдПрдБ, рд╕реНрдерд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред

рдЗрд╕рдХреЗ рдмрд╛рдж, рдкреНрд▓реЗрдирдХреНрд▓рд╛рд╕ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдВ, рдЙрд╕рдореЗрдВ рдкреНрд▓реЗрди рдкреНрд▓реЗрдо рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдмрд┐рд▓реНрдб рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ

рд╕рдлрд▓ рд╕рдВрдХрд▓рди рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реЗ рд▓рд┐рдП MATLABplane.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдпрд╣ рдпрд╣рд╛рдБ рд╣реЛрдЧреА: ... MATLABplane \ distrib \ MATLABplane.dllред
рдЪрд░рдг 4. рдПрдХ C # .NET рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВ
MVS 2008 SP1 рдореЗрдВ, рд╣рдо C # рдореЗрдВ рдПрдХ рд╡рд┐рдВрдбреЛрдЬ рдлреЙрд░реНрдо рдПрдкреНрд▓реАрдХреЗрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВред
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рд┐рдВрдХ рдЬреЛрдбрд╝реЗрдВ
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рд╕рдВрдХрд▓рд┐рдд MATLABplane.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдФрд░ MWArray.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЖрдк рдЗрд╕реЗ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ ... \ MATLAB \ R2010a \ toolbox \ dotnetbuilder \ bin \ win32 \ v2.0ред рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП:

рдХрд┐рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдирд╛рдорд╕реНрдерд╛рди рд╡рд┐рд╡рд░рдг рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:
using MathWorks.MATLAB.NET.Utility;
using MathWorks.MATLAB.NET.Arrays;
using MATLABplane;
рдПрдХ рдлреЙрд░реНрдо рдмрдирд╛рдПрдБ
рдбрд┐рдЬрд╛рдЗрдирд░ рдореЗрдВ рдЯреВрд▓рдмрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рднрд╡рд┐рд╖реНрдп рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд░реВрдк рдмрдирд╛рддреЗ рд╣реИрдВред

рдирд┐рдореНрди рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд╝реЙрд░реНрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рд▓реЗрдмрд▓, рдЯреЗрдХреНрд╕реНрдЯрдмреЙрдХреНрд╕, рд░рд┐рдЪрдмреЙрдХреНрд╕, рдмрдЯрдиред
рдПрдХ рдХреЛрдб рд▓рд┐рдЦрдирд╛
рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ C # рдФрд░ MATLAB рдХреА рдкрд░рд╕реНрдкрд░ рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП, MATAAB рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрд░реВрдк MWArray C # рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред MWArray рд╕рд░рдгрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИ, рдЗрд╕рдореЗрдВ рдЪрд░, рд╕реНрдХреЗрд▓рд░, рд╡реИрдХреНрдЯрд░, рдореИрдЯреНрд░реАрд╕, рдкрдВрдХреНрддрд┐рдпрд╛рдВ, рд╕рдВрд░рдЪрдирд╛рдПрдВ, рд╡рд╕реНрддреБрдПрдВ рдЖрджрд┐ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред MWArray рд╕реЗ рдХрд┐рд╕реА рднреА рдорд╛рди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЯрд╛рдЗрдк рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдСрдкрд░реЗрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
- рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд░реВрдк рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рдкрд╛рда рдлрд╝реАрд▓реНрдб рд╕реЗ рдорд╛рди
- рдкреНрд▓реЗрди рдореЗрдердб рдХреЛ рдкреНрд▓реЗрдирдХреНрд▓рд╛рд╕ рдХреНрд▓рд╛рд╕ рд╕реЗ рдХреЙрд▓ рдХрд░рдирд╛
- рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдЖрдЙрдЯрдкреБрдЯ рд╕рд░рдгреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ (рдкреНрд░рдХрд╛рд░ MWNumericArray)
- рд░рд┐рдЪрдмреЙрдХреНрд╕ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рд╕рд░рдгреА
рдиреАрдЪреЗ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рдХреЛрдб рд╣реИ:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using MathWorks.MATLAB.NET.Utility; using MathWorks.MATLAB.NET.Arrays; using MATLABplane; namespace planeApp { public partial class Form1 : Form { public Form1() { InitializeComponent(); button1.Click += new EventHandler(button1_Click);
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реНрдХреАрдо MWArray-> MWNUmericArray-> рдЯрд╛рдЗрдк C # рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЯрд╛рдЗрдк рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХрд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╣рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦрддреЗ рд╣реИрдВ:

рд╕рд╛рд╣рд┐рддреНрдп
- MATLABред рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реА # рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ, рдмреЛрд░рд▓реИрдВрдб рдЬреЗрдмреНрдпреВрд▓рд░, рд╡реАрдмреАрдП - рдПрдирдХреЗ рд╕реНрдореЛрд▓реЗрдВрдЯрд╕реЗрд╡
- рд╕реА # рдФрд░ .NET рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдо - рдИред рдЯреНрд░реЛрд▓реНрд╕рди