Index in position 2 exceeds array bounds (imported .NET assembly)
Show older comments
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)
Categories
Find more on Deploy to .NET Applications Using MWArray API in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!