Search
Write a publication
Pull to refresh

Как импортировать функцию из Matlab в C#

Порой возникает необходимость сделать что — то простое, но муторное, которое до тебя делали многие, и при этом, не хочется на этом месте изобретать велосипед.
Очень большой функционал по обработке изображений, статистики, мат. выражений, матриц и т.д., например, имеет пакет Matlab, и для выполнения части курсовой или диплома можно воспользоваться некоторыми его функциями, интегрируя его с каким-нибудь языком, например, с C#. Остается лишь вопрос как это сделать?


1) Необходимо в самом Matlabe создать m — функцию, набор команд выполняющих определенную задачу, сохраненную в виду скрипта.
Например, рассмотрим, m — функцию, которая бинаризует изображение

function[binimg] = newgetinfo(filename)
img = imread(filename);

%Бинаризация по порогу 0.5
%и вывод полученного бинарного изображения на экран.

binimg = im2bw(I, 0.5);
end


2) В командном окне Matlaba вводим deploytool;

3) Открывается Deployment Tool, в котором можно выбрать создание нового проекта Matlab builder for .Net;

4) Добавляем в него наш m — файл и делаем построение проекта, это процесс долгий;

5) После чего открываем студию, создаем новый проект (C#);

6) К этому проекту можно добавить связь (Add Reference), где мы выбираем .dll, созданную Matlab;

7) Точно так же добавляем MWArray.dll и не забываем написать using MathWorks.MATLAB.NET.Arrays;

8) Пишем в коде

untitled1.untitled1class a = new untitled1.untitled1class();
MWArray arrIn = "C:/filename.tif";
MWArray[] binimg = a.mymorf(1, arrIn);


где untitled1-название проекта, собранное Matlab

9) И чудо, после этого в binimg — оказывается наше бинаризованное изображение и с ним можно делать, что угодно. Преобразовывать к различным встроенным типам или к bitmap.

Таким образом, написав немного строк в Matlab и добавив пару связей в C# можно с легкостью решить многие задачи и подзадачи.
Но стоит помнить, что все это будет работать достаточно медленно, поэтому если вам не безразлична скорость, то лучше не поленится и сделать все самому в C#.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.