๐Ÿ–ฅ๏ธ Coding/MATLAB & Simulink

c# matlab ์ž๋™ํ™”

SpaceJ 2021. 8. 22. 17:34
๋ฐ˜์‘ํ˜•

c#์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋‹ค๊ฐ€ ๋ณด๋ฉด ์ˆ˜ํ•™๊ณผ ๊ด€๋ จ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค๋•Œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ๊ทธ๋Ÿด ๋•Œ๋งˆ๋‹ค matlab์„ c#์œผ๋กœ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ•˜๊ณค ํ–ˆ๋Š”๋ฐ, matlab์€ ์ด๋ฏธ ๊ทธ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. 

 

https://kr.mathworks.com/help/matlab/matlab_external/call-matlab-function-from-c-client.html 

 

C# ํด๋ผ์ด์–ธํŠธ์—์„œ MATLAB ํ•จ์ˆ˜ ํ˜ธ์ถœํ•˜๊ธฐ - MATLAB & Simulink - MathWorks ํ•œ๊ตญ

๋‹ค์Œ MATLAB ๋ช…๋ น์— ํ•ด๋‹นํ•˜๋Š” ๋งํฌ๋ฅผ ํด๋ฆญํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด MATLAB ๋ช…๋ น ์ฐฝ์— ์ž…๋ ฅํ•˜์‹ญ์‹œ์˜ค. ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” MATLAB ๋ช…๋ น์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

kr.mathworks.com

์œ„ ๋ฐฉ๋ฒ•์„ ์ฐธ๊ณ ํ•˜๋ฉด ๋˜๋Š”๋ฐ, ์œ„ ๋ฐฉ๋ฒ•์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋˜๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณ€ํ˜•ํ•˜์—ฌ ์ ์šฉํ•˜๋ฉด ๋œ๋‹ค. 

1. Visual Studio ์—์„œ COM ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ Matlab Application (Version X.X) Type Library ์ถ”๊ฐ€

2. ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ์‚ฌ์šฉ

public static class _Matlab
{
	private static Type mlType = null;
    private static MLApp.MLApp matlab = null;
    
    public static Test()
    {
    	if (matlab = null) // matlab ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜๋งŒ ์‹คํ–‰๋˜๋„๋ก null check!!
        {
        	mlType = Type.GetTypeFromProgId("Matlab.Autoserver");
            matlab = Activator.CreateInstance(mlType) as MLApp.MLApp;
            matlab.Visible = 0;
            System.Threading.Thread.Sleep(2000);
        }
        var Result = matlab.execute("1 + 1");
        // ans = 
        // 
        // 		2
		matlab.Quit();
    }
}

์œ„ ๊ธฐ๋Šฅ์„ ์ฐธ๊ณ ํ•œ๋‹ค๋ฉด, ๋‹ท๋„ท ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๋‹จ์ ์ธ ์ˆ˜ํ•™ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ถ€์žฌ๋ฅผ ์ปค๋ฒ„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋งŒ, Matlab์ด ๋ฌด์กฐ๊ฑด ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•˜๊ณ , Matlab์— ์˜ํ•œ ์—๋Ÿฌ ๋ฐœ์ƒ์‹œ ๋””๋ฒ„๊น…์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค.

 

<์ฐธ๊ณ >

1. Matlab Runtime ๋ฒ„์ „ ํ™•์ธ

 

MATLAB Runtime - MATLAB Compiler

MATLAB Runtime์€ ์ปดํŒŒ์ผ๋œ MATLAB ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋…๋ฆฝ ํ˜• ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ธํŠธ์ž…๋‹ˆ๋‹ค. MATLAB, MATLAB Compiler ๋ฐ MATLAB Runtime์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ์ˆ˜์น˜์—ฐ์‚ฐ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋˜

kr.mathworks.com

2. Matlab ProgID

 

Create MATLAB Server - MATLAB & Simulink - MathWorks ํ•œ๊ตญ

๋‹ค์Œ MATLAB ๋ช…๋ น์— ํ•ด๋‹นํ•˜๋Š” ๋งํฌ๋ฅผ ํด๋ฆญํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด MATLAB ๋ช…๋ น ์ฐฝ์— ์ž…๋ ฅํ•˜์‹ญ์‹œ์˜ค. ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” MATLAB ๋ช…๋ น์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

kr.mathworks.com

๋ฐ˜์‘ํ˜•