MATLAB Answers

0

Can you help me please , to resolve this erreur in matlab

Asked by manel maatouk on 18 May 2018
Latest activity Commented on by Walter Roberson
on 20 May 2018

I want to browse a 4D matrix and I got this error message:

     Undefined function '_colonobj' for input arguments of type 'double' and attributes 'full 4d real'.

  5 Comments

@manel maatouk: Please post code as text, such that it can be used by copy&paste to write an answer.

for ik=1:10            % ik longueur masque
  for tt=1:21          %  tt le num du theta
    t=ttabTheta(tt);   % t l'angle theta  
    for i=1:M
      for j=1:N
        if(radon_cartesien(ik,tt,i,j)==TabPik_Matrice(ik,tt))
          resultatprog(s,1)=i;
          resultatprog(s,2)=j;
        end
      end
    end
  end
end

[EDITED, Jan, code formatted]

The most important part is not posted: How is M defined?

You overwrite resultatprog(s,1) in each iteration of the 2 inner loops, when the condition is met. Is this really useful?

Sign in to comment.

1 Answer

Answer by Jan
on 19 May 2018
Edited by Jan
on 20 May 2018

The error message means, that in your code

for i=1:M

the variable M is a 'full 4d real' (although I do not know, what this means). Check how M is defined and adjust it to be a double. Maybe this is working already:

for i=1:double(M)

 

[EDITED] Walter has explained the error message: M is a 4D array, but the colon operator expects a scalar. Then I guess you want:

    for i = 1:size(radon_cartesien, 3)
      for j = 1:size(radon_cartesien, 4)

  3 Comments

The error means that M is 4 dimensional. The second argument for the : operation should be a scalar, but a vector will be tolerated and treated as just its first element.

@Walter: Thank you very much. I'm confused:

X = rand(2,3);
Y = rand(2,3,4,5);
1:X   % Silently uses the 1st element only, no error
1:Y   % Error:
 Undefined function 'colon' for input arguments of type 'double'
 and attributes 'full 4d real'.

After your explanation I understand the message. But if Matlab catches this problem for multi-dimensional arrays, I cannot understand, why there is no error for the 2D case. This:

for k = 1:size(X)

causes problems repeatedly and you find several concerning threads in this forum.

In the past I have seen it documented that the first value will be silently used (at least under some circumstances) but I do not see that documentation at present.

Sign in to comment.