Я развернул функцию matlab в сборке .NET, и теперь у меня есть некоторые проблемы с реализацией.
Мой графический интерфейс сообщает мне, что в моем .m-файле в строке 12 есть Ошибка, но я действительно не вижу проблемы. Надеюсь, вы мне поможете!
Это мой код C #, использующий развернутую сборку .NET (Gradient) и части API Mathworks:
using MathWorks.MATLAB.NET.Arrays;
using MathWorks.MATLAB.NET.Utility;
using Gradient;
namespace matlabv3
{
public class Gradientenberechnung
{
public static void addNum()
{
int pdata = 250;
CSharpGradient gradient = new CSharpGradient();
MWArray output = gradient.gradientVarianteA((MWArray)pdata); //<-- Error happens here
Console.WriteLine("Output: ", output);
Console.ReadKey();
}
}
}
Это моя функция Matlabкоторый возвращает математический градиент:
function [outputArg] = gradientVarianteA(pdata)
%% Variante A - Only the maximum difference is calculated without division by the distance
d = nan(10,9);
for n = 1:numel(pdata)
[j,i] = ind2sub(size(pdata),n);
switch true
case j==1
if i == 1
d(j,i) = max(abs([...
NaN NaN NaN...
NaN NaN pdata(j,i)-pdata(j,i+1)...
NaN pdata(j,i)-pdata(j+1,i) pdata(j,i)-pdata(j+1,i+1)]));
elseif i == 9
d(j,i) = max(abs([...
NaN NaN NaN...
pdata(j,i)-pdata(j,i-1) NaN NaN...
pdata(j,i)-pdata(j+1,i-1) pdata(j,i)-pdata(j+1,i) NaN]));
else
d(j,i) = max(abs([...
NaN NaN NaN...
pdata(j,i)-pdata(j,i-1) NaN pdata(j,i)-pdata(j,i+1)...
pdata(j,i)-pdata(j+1,i-1) pdata(j,i)-pdata(j+1,i) pdata(j,i)-pdata(j+1,i+1)]));
end
case j==10
if i == 1
d(j,i) = max(abs([...
NaN pdata(j,i)-pdata(j-1,i) pdata(j,i)-pdata(j-1,i+1)...
NaN NaN pdata(j,i)-pdata(j,i+1)...
NaN NaN NaN]));
elseif i == 9
d(j,i) = max(abs([...
pdata(j,i)-pdata(j-1,i-1) pdata(j,i)-pdata(j-1,i) NaN...
pdata(j,i)-pdata(j,i-1) NaN NaN...
NaN NaN NaN]));
else
d(j,i) = max(abs([...
pdata(j,i)-pdata(j-1,i-1) pdata(j,i)-pdata(j-1,i) pdata(j,i)-pdata(j-1,i+1)...
pdata(j,i)-pdata(j,i-1) NaN pdata(j,i)-pdata(j,i+1)...
NaN NaN NaN]));
end
otherwise
if i == 1
d(j,i) = max(abs([...
NaN pdata(j,i)-pdata(j-1,i) pdata(j,i)-pdata(j-1,i+1)...
NaN NaN pdata(j,i)-pdata(j,i+1)...
NaN pdata(j,i)-pdata(j+1,i) pdata(j,i)-pdata(j+1,i+1)]));
elseif i == 9
d(j,i) = max(abs([...
pdata(j,i)-pdata(j-1,i-1) pdata(j,i)-pdata(j-1,i) NaN...
pdata(j,i)-pdata(j,i-1) NaN NaN...
pdata(j,i)-pdata(j+1,i-1) pdata(j,i)-pdata(j+1,i) NaN]));
else
d(j,i) = max(abs([...
pdata(j,i)-pdata(j-1,i-1) pdata(j,i)-pdata(j-1,i) pdata(j,i)-pdata(j-1,i+1)...
pdata(j,i)-pdata(j,i-1) NaN pdata(j,i)-pdata(j,i+1)...
pdata(j,i)-pdata(j+1,i-1) pdata(j,i)-pdata(j+1,i) pdata(j,i)-pdata(j+1,i+1)]));
end
end
end
outputArg = d;
end