'Index exceeds array dimensions. Index value 0 exceeds valid range [1-12] for array 'A'.' I get this error when I run the code? Can you please help?
9 views (last 30 days)
Show older comments
function cx_value = cx( alpha, el )
A = [ -0.099 -0.081 -0.081 -0.063 -0.025 0.044 0.097 0.113 0.145 0.167 0.174 0.166;
-0.048 -0.038 -0.040 -0.021 0.016 0.083 0.127 0.137 0.162 0.177 0.179 0.167;
-0.022 -0.020 -0.021 -0.004 0.032 0.094 0.128 0.130 0.154 0.161 0.155 0.138;
-0.040 -0.038 -0.039 -0.025 0.006 0.062 0.087 0.085 0.100 0.110 0.104 0.091;
-0.083 -0.073 -0.076 -0.072 -0.046 0.012 0.024 0.025 0.043 0.053 0.047 0.040];
A = A';
row =3 ; %3
col =3; %3
s = 0.2 * alpha;
k = fix ( s );
if ( k <= -2 )
k = -1;
end
if ( k >= 9 )
k = 8;
end
da = s - k;
l = k + fix ( sign ( da ) * 1.1 );
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% added as boundary condition
if l < -2
l = -2;
elseif l > 9
l = 9;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
s = el / 12.0;
m = fix ( s );
if ( m <= -2 )
m = -1;
end
if ( m >= 2)
m = 1;
end
de = s - m;
n = m + fix ( sign ( de ) * 1.1 );
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% added as boundary condition
if n < -2
n = -2;
elseif n > 2
n = 2;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
t = A( nansum(k+row), nansum(m+col) ); %numsum ı ben ekledim.
u = A( nansum(k+row), nansum(n+col) );
v = t + abs( da ) * ( A( l+row, m+col ) - t );
w = u + abs( da ) * ( A( l+row, n+col ) - u );
cx_value = v + ( w - v ) * abs( de );
4 Comments
Answers (1)
Mathieu NOE
on 3 May 2023
hello
I replaced nansum which is outdatted by sum with omitnan parameter
seems to work, at least for the input data I picked (you did not provide any test data)
% test function with data ??
cx_value = cx( 10, 10 )
function cx_value = cx( alpha, el )
A = [ -0.099 -0.081 -0.081 -0.063 -0.025 0.044 0.097 0.113 0.145 0.167 0.174 0.166;
-0.048 -0.038 -0.040 -0.021 0.016 0.083 0.127 0.137 0.162 0.177 0.179 0.167;
-0.022 -0.020 -0.021 -0.004 0.032 0.094 0.128 0.130 0.154 0.161 0.155 0.138;
-0.040 -0.038 -0.039 -0.025 0.006 0.062 0.087 0.085 0.100 0.110 0.104 0.091;
-0.083 -0.073 -0.076 -0.072 -0.046 0.012 0.024 0.025 0.043 0.053 0.047 0.040];
A = A';
row =3 ; %3
col =3; %3
s = 0.2 * alpha;
k = fix ( s );
if ( k <= -2 )
k = -1;
end
if ( k >= 9 )
k = 8;
end
da = s - k;
l = k + fix ( sign ( da ) * 1.1 );
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% added as boundary condition
if l < -2
l = -2;
elseif l > 9
l = 9;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
s = el / 12.0;
m = fix ( s );
if ( m <= -2 )
m = -1;
end
if ( m >= 2)
m = 1;
end
de = s - m;
n = m + fix ( sign ( de ) * 1.1 );
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% added as boundary condition
if n < -2
n = -2;
elseif n > 2
n = 2;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% t = A( nansum(k+row), nansum(m+col) ); %numsum ı ben ekledim.
% u = A( nansum(k+row), nansum(n+col) );
t = A( sum(k+row,"omitnan"), sum(m+col,"omitnan") ); %numsum ı ben ekledim.
u = A( sum(k+row,"omitnan"), sum(n+col,"omitnan") );
v = t + abs( da ) * ( A( l+row, m+col ) - t );
w = u + abs( da ) * ( A( l+row, n+col ) - u );
cx_value = v + ( w - v ) * abs( de );
end
7 Comments
See Also
Categories
Find more on Matrix Indexing 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!