How to fix "Error using == Arrays have incompatible sizes for this operation." in this code?

204 visualizaciones (últimos 30 días)
Hi, I am writing the following code:
for k = 1 : length(theFiles) % files are alreaady defined in original code
p=1;
t=1;
for q=1:43 % there are 43 inputs for arr
c=corr2(B0,mask);
arr(p)=abs(c);
if(arr(p)<1)
if(arr(p)>0.85)
cor(t)=arr(p);
t=t+1;
end
end
p=p+1;
end %end of q loop
mx=max(cor); %conditioned arr
ixa=find(arr==mx,1) %find the location for which mx matches arr value the first instance
But when run, the result shows following:
Error using ==
Arrays have incompatible sizes for this operation.
Error in Untitled12 (line 264)
ixa=find(arr==mx,1);
It is noteworthy that, the error shows only for certain image inputs. For other inputs, the code works fine.
How can I fix it?
  3 comentarios
Thiripura Sundari
Thiripura Sundari el 1 de Mzo. de 2025 a las 14:57
Arrays have incompatible sizes for this operation.
Error in guna1 (line 32)
RHS = (theta(2:end-1,j)/dt) + Ec*((diff(u(:,j))./dy).^2) - Q*0.5*(theta(3:end,j)-theta(2:end-1,j));
give answer
Walter Roberson
Walter Roberson el 1 de Mzo. de 2025 a las 18:06
We do not know the size of dt
We do not know the size of Ec
We do not know the size of dy
We do not know the size of Q
We do not know for sure that j is scalar.
We do not know the size(theta,1)-2 is the same as size(u,1)-1 . This is the most likely culprit. If j is scalar then size(theta(2:end-1,j),1) is N-2 (where theta is size(theta,1)) and size(diff(u(:,j)) is M-1 where M = size(u,1). If size(theta,1) is the same as size(u,1) then you would would have a mismatch of sizes, N-2 compared to N-1

Iniciar sesión para comentar.

Respuesta aceptada

KSSV
KSSV el 7 de Jul. de 2021
Error is clear, you are trying to equate arr and mx. Check do they have same dimensions? They have different dimensions that's why error.
A = rand(2) ; B = rand(2) ;
A == B % no error as the dimensions are same
ans = 2×2 logical array
0 0 0 0
C = rand(3) ;
A == C % error as the dimensions are different
Arrays have incompatible sizes for this operation.
  6 comentarios
Walter Roberson
Walter Roberson el 9 de Feb. de 2023
If you change the calls to
h11=integral(h, 0, 10, 'arrayvalued', true); %inf
h22=integral(v, 0, 10, 'arrayvalued', true);%inf
then the integrals can proceed -- but they take a long time. Long enough that I do not know yet whether the steps after that would be compatible with the values returned by those statements.
Walter Roberson
Walter Roberson el 9 de Feb. de 2023
psi1=psi1+(Ai.*(r.^(-i+1)+h11)+(r.^(1./2).*besselk(i-1./2,r.*alpha)+h22).*Bi).*gegenbauerC(i,-1./2, cos(t));
Variable psi1 is not defined at that point in the code. For debugging purposes we can initialize it to 0 before that line.
[DH1,hh2]=contour(x,y,psi,10,'-k');
Variable psi is not defined at that point in the code. For debugging purposes we can use psi1 instead.
psi1=psi1+(Ai.*(r.^(-i+1)+h11)+(r.^(1./2).*besselk(i-1./2,r.*alpha)+h22).*Bi).*gegenbauerC(i,-1./2, cos(t));
That comes out as all zero, because Ai and Bi are zero.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Programming Utilities en Help Center y File Exchange.

Productos


Versión

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by