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

204 Ansichten (letzte 30 Tage)
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 Kommentare
Thiripura Sundari
Thiripura Sundari am 1 Mär. 2025 um 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 am 1 Mär. 2025 um 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

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

KSSV
KSSV am 7 Jul. 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 Kommentare
Walter Roberson
Walter Roberson am 9 Feb. 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 am 9 Feb. 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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Programming Utilities finden Sie in Help Center und File Exchange

Produkte


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by