Index in position 2 exceeds array bounds (imported .NET assembly)

hi everyone,
I deployed an own matlab function to an .net assembly and now i have some problems with the implementation.
My GUI is telling me that there is an Error in my .m-file at line 12 but I dont really see the issue.
Hope you can help me out!
This is my C# Code:
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();
}
}
}
and this is the function that I'm using:
function [outputArg] = gradientVarianteA(pdata)
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

Answers (0)

Asked:

on 1 Oct 2019

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!