Index in position 1 is invalid. Array indices must be positive integers or logical values.

1 visualizzazione (ultimi 30 giorni)
function findalph = impGradDes(M, P)
[n, m, d] = size(M);
%% Initializing the optimal weight vector
findalph = ones(d,1);
%% Optimization process
for i=1:d
for j=1:d
A(i,j) = sum(sum(M(:,:,i).*M(:,:,j)));
end
B(i,1) = sum(sum(P.*M(:,:,i)));
end
tau = 5;
iter = 150000;
gamma1 = 1/200000;
gamma2 = 1;
inv = (eye(d) + 2*tau*gamma1*A)^(-1);
for i = 1:iter
findalph = inv * (findalph+2*tau*max(-findalph,0)+2*tau*gamma1*B);
end
end
  4 Commenti
ACHALA SHAKYA
ACHALA SHAKYA il 20 Giu 2019
A(i,j) = sum(sum(M(:,:,i).*M(:,:,j)))
B(i,1) = sum(sum(P.*M(:,:,i)));
The above error is in these lines.

Accedi per commentare.

Risposte (1)

Bjorn Gustavsson
Bjorn Gustavsson il 20 Giu 2019
OK, when you have a problem that simple (in terms of figuring out what is going on) you do this:
dbstop if error
Then rerun the code, matlab will then stop at the offending line and you get a prompt at that line making it possible for you to inspect the variables to see what's going on. Presumably something strange is happening with either i or j, so you
can just check those variable and the M and P variables too.
HTH

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by