Я разработал код в MATLAB, и он работает нормально. Я работал в GUI в MATLAB, но для меня это была головная боль. Я думаю, что я могу создать GUI просто и эффективно. Можем ли мы создать графический интерфейс в C#, который также будет запускать весь код MATLAB, который я разработал?Можем ли мы создать графический интерфейс в C#, который будет запускать код MATLAB в обратной руке?
Можем ли мы создать графический интерфейс в C#, который будет запускать код MATLAB в обратной руке?
ответ
Да, это возможно. Для получения дополнительной информации, посмотрите на:
Если вам нужен быстрый и грязный способ обернуть MATLAB код с C# GUI (например, WinForms), одним из вариантов является создание exe из вашего кода MATLAB (.m) - из .NET, вы можете легко запустить этот exe в качестве нового процесса. Обратите внимание, что этот подход может быть не лучшим в некоторых ситуациях, так как задержка, вызванная вызовом exe, может быть довольно существенной (как объясняет другой ответ).
Пример: во-первых, написать MATLAB код в виде функции:
function y=SamplePlot(p, d, w, t)
numericValueP=str2num(p);
numericValueD=str2num(d);
numericValueW=str2num(w);
time=str2num(t);
%... do stuff ...
plot(...);
Входные параметры будут переданы на этот код в качестве параметров строки через командную строку, следовательно, они будут преобразованы с помощью str2num
. Например. MATLAB вызов
SamplePlot('1', '2', '3', '4')
будет представлена как
SamplePlot.exe 1 2 3 4
Теперь создайте автономное приложение консольное из .m файла: в MATLAB консоли написать:
deploytool
Имя: SamplePlot. prj (например). Цель: консольное приложение. Добавить файл .m. Пакет: добавьте MCR (это MATLAB Compiler Runtime - это то, что потребуется конечному пользователю, если у него нет MATLAB, для локального тестирования вам не нужно добавлять это). Затем используйте:
mbuild -setup
Наконец, нажмите на значок 'сборки'. Через некоторое время генерируется exe. Теперь вы можете запустить этот exe как процесс из приложения C#, например. при нажатии кнопки:
private void button1_Click(object sender, EventArgs e)
{
string p=TextBox1.Text;
string d=TextBox2.Text;
string w=TextBox3.Text;
string t=TextBox4.Text;
string params = String.Format("{0} {1} {2} {3}",p,d,w,t);
System.Diagnostics.Process.Start("SamplePlot.exe", params);
}
У меня остались некоторые мелкие детали, но это один из возможных вариантов.
(Если я правильно помню, сборка также может быть сгенерирована таким образом: вы можете вызвать сборку вместо exe-файла).
У MATLAB есть продукт (MATLAB Builder NE), построенный поверх MATLAB Compiler специально для создания сборников .NET: http://www.mathworks.com/products/netbuilder/. Не нужно связываться с файлами EXE, вы можете использовать сгенерированную сборку, как и любую другую библиотеку .NET. Результат, конечно, зависит от [MCR] (http://www.mathworks.com/products/compiler/mcr/) – Amro
Я довольно незнакомый с C#, но в итоге мне пришлось использовать .NET-классы из MATLAB.
Таким образом, вы также можете сделать это наоборот, чем предыдущие ответы предполагают:
Поскольку MATLAB имеет возможность создать/открыть .NET GUI-элементы, как диалог, я думаю, вы также должны быть в состоянии откройте свой .NET-GUI от MATLAB, а затем подключите свой MATLAB-код через обратные вызовы. См., Например,: http://www.mathworks.de/de/help/matlab/matlab_external/getting-started-with-net.html
В зависимости от того, как часто вы хотите, чтобы выполнить Matlab-код с графическим интерфейсом и сколько времени Matlab-обработка обычно, это также позволяет избежать довольно больших накладных расходов, которые, например, представленный с использованием .exe, сгенерированного с помощью компилятора MATLAB. Скажите, вы бы хотели сделать быстрые операции вычисления матрицы, занимая менее секунды с каждым другим нажатием кнопки, чем запуск standalone.exe каждый раз сделает ваш gui совершенно бесполезным.
Эта ссылка так полезно и просто: Call MATLAB Function from C# Client
возможно дубликат [Run MATLAB с C# и дать параметр MATLAB] (http://stackoverflow.com/questions/8857548/run-matlab-from- c-sharp-and-give-parameter-to-matlab) –
Если ваш графический интерфейс относительно прост, другим способом является вызов модального диалогового окна .NET в Matlab и в соответствии с выбором пользователя в диалоговом окне вы можете запустить определенный скрипт Matlab , Этот метод заслуживает того, что вам не нужно оставлять Matlab вообще. –