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

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

@Tawsif Mostafiz Can you add those images on which your code gives error so that we can try and check what is a problem?
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
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

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

I solved the problem, Thanks!
i have the sameproblem. could u help me?
the program is
A=[ -0.00767
0.00696
-0.00031
0.00005
-0.00001
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000];
B=[ 0.12000
0.00209
-0.00019
0.00001
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
.00000E+00
.00000E+00
.00000E+00
.00000E+00
0.00000
0.00000
0.00000
0.00000
0.00000];
a = 1 ; %RADIUS
L=.4;
c =-a/L;
b =a/L;
m =a*200; % NUMBER OF INTERVALS
[x,y]=meshgrid((c:(b-c)/m:b),(c:(b-c)/m:b)');
[I J]=find(sqrt(x.^2+y.^2)<(a-.1));
if ~isempty(I)
x(I,J) = 0;
y(I,J) = 0;
end
r=sqrt(x.^2+y.^2);
t=atan2(y,x);
warning off
chi=1;alpha=1;ab1=1;
k=sqrt(chi.^2+alpha.^2); %xi=sqrt(t.^2+k.^2);
%for i=2:5
i=10;
h=@(t1)((t1-sqrt(t1.^2+k.^2)).^(-1).* (t1.*(exp(-sqrt(t1.^2+k.^2).*(r.*cos(t)+ab1))-exp(-t1.*(r.*cos(t)+ab1))).*(((-1).^(i-1).*t1.^(i-1).*exp(-ab1.*t1)./factorial( i ))+((-1).^(i).*sqrt(pi.*k./2/t1.^2).*exp(-ab1.*sqrt(t1.^2+k.^2)).*gegenbauerC(i,-1./2, sqrt(t1.^2+k.^2)./k))).*t1.*besselj(1,t1.*r.*sin(t))));
v=@(t1)((t1-sqrt(t1.^2+k.^2)).^(-1).* ((-t1.*exp(-sqrt(t1.^2+k.^2).*(r.*cos(t)+ab1))+sqrt(t1.^2+k.^2).*exp(-t1.*(r.*cos(t)+ab1))).*(((-1).^(i).*t1.^(i-1).*exp(-ab1.*t1)./factorial( i ))+((-1).^(i-1).*sqrt(pi.*k./2/(t1.^2+k.^2)).*exp(-ab1.*sqrt(t1.^2+k.^2)).*gegenbauerC(i,-1./2, sqrt(t.^2+k.^2)./k))).*t1.*besselj(1,t1.*r.*sin(t))));
h11=integral(h, 0, 10); %inf
h22=integral(v, 0, 10);%inf
Ai=A(i-1);Bi=B(i-1);
psi1=psi1+(Ai.*(r.^(-i+1)+h11)+(r.^(1./2).*besselk(i-1./2,r.*alpha)+h22).*Bi).*gegenbauerC(i,-1./2, cos(t));
%end
[DH1,hh2]=contour(x,y,psi,10,'-k');
%clabel(CH,h1,'FontSize',8);clabel(DH,h2,'FontSize',8)
hold on
m1=100;
r1=ones(1,m1+1)*a;
th=(0:2*pi/m1:2*pi);
set(polar(th,r1,'-k'),'LineWidth',1.1);
title('$\kappa=0$','Interpreter','latex','FontSize',10,'FontName','Times New Roman','FontWeight','Normal')
ylabel({'$\eta=1\quad$'},'Interpreter','latex','FontSize',10,'rot',360,'FontName','Times New Roman','FontWeight','Normal');
%title('Happel$^\prime$s model','Interpreter','latex','FontSize',10,'FontName','Times New Roman','FontWeight','Normal')
%axis square
axis off
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
outcomes
Arrays have incompatible sizes for this operation.
Error in
test>@(t1)((t1-sqrt(t1.^2+k.^2)).^(-1).*(t1.*(exp(-sqrt(t1.^2+k.^2).*(r.*cos(t)+ab1))-exp(-t1.*(r.*cos(t)+ab1))).*(((-1).^(i-1).*t1.^(i-1).*exp(-ab1.*t1)./factorial(i))+((-1).^(i).*sqrt(pi.*k./2/t1.^2).*exp(-ab1.*sqrt(t1.^2+k.^2)).*gegenbauerC(i,-1./2,sqrt(t1.^2+k.^2)./k))).*t1.*besselj(1,t1.*r.*sin(t))))
(line 77)
h=@(t1)((t1-sqrt(t1.^2+k.^2)).^(-1).*
(t1.*(exp(-sqrt(t1.^2+k.^2).*(r.*cos(t)+ab1))-exp(-t1.*(r.*cos(t)+ab1))).*(((-1).^(i-1).*t1.^(i-1).*exp(-ab1.*t1)./factorial( i
))+((-1).^(i).*sqrt(pi.*k./2/t1.^2).*exp(-ab1.*sqrt(t1.^2+k.^2)).*gegenbauerC(i,-1./2,
sqrt(t1.^2+k.^2)./k))).*t1.*besselj(1,t1.*r.*sin(t))));
Error in integralCalc/iterateScalarValued (line 314)
fx = FUN(t);
Error in integralCalc/vadapt (line 132)
[q,errbnd] = iterateScalarValued(u,tinterval,pathlen);
Error in integralCalc (line 75)
[q,errbnd] = vadapt(@AtoBInvTransform,interval);
Error in integral (line 87)
Q = integralCalc(fun,a,b,opstruct);
Error in test (line 80)
h11=integral(h, 0, 10); %inf
Related documentation
>>
Arrays have incompatible sizes for this operation.
Error in fur_elise (line 11)
mel = t + b;
Related documentation
A=[ -0.00767
0.00696
-0.00031
0.00005
-0.00001
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000];
B=[ 0.12000
0.00209
-0.00019
0.00001
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
0.00000
.00000E+00
.00000E+00
.00000E+00
.00000E+00
0.00000
0.00000
0.00000
0.00000
0.00000];
a = 1 ; %RADIUS
L=.4;
c =-a/L;
b =a/L;
m =a*200; % NUMBER OF INTERVALS
[x,y]=meshgrid((c:(b-c)/m:b),(c:(b-c)/m:b)');
[I J]=find(sqrt(x.^2+y.^2)<(a-.1));
if ~isempty(I)
x(I,J) = 0;
y(I,J) = 0;
end
r=sqrt(x.^2+y.^2);
t=atan2(y,x);
warning off
chi=1;alpha=1;ab1=1;
k=sqrt(chi.^2+alpha.^2); %xi=sqrt(t.^2+k.^2);
%for i=2:5
i=10;
h=@(t1)((t1-sqrt(t1.^2+k.^2)).^(-1).* (t1.*(exp(-sqrt(t1.^2+k.^2).*(r.*cos(t)+ab1))-exp(-t1.*(r.*cos(t)+ab1))).*(((-1).^(i-1).*t1.^(i-1).*exp(-ab1.*t1)./factorial( i ))+((-1).^(i).*sqrt(pi.*k./2/t1.^2).*exp(-ab1.*sqrt(t1.^2+k.^2)).*gegenbauerC(i,-1./2, sqrt(t1.^2+k.^2)./k))).*t1.*besselj(1,t1.*r.*sin(t))));
v=@(t1)((t1-sqrt(t1.^2+k.^2)).^(-1).* ((-t1.*exp(-sqrt(t1.^2+k.^2).*(r.*cos(t)+ab1))+sqrt(t1.^2+k.^2).*exp(-t1.*(r.*cos(t)+ab1))).*(((-1).^(i).*t1.^(i-1).*exp(-ab1.*t1)./factorial( i ))+((-1).^(i-1).*sqrt(pi.*k./2/(t1.^2+k.^2)).*exp(-ab1.*sqrt(t1.^2+k.^2)).*gegenbauerC(i,-1./2, sqrt(t.^2+k.^2)./k))).*t1.*besselj(1,t1.*r.*sin(t))));
whos
Name Size Bytes Class Attributes A 29x1 232 double B 29x1 232 double I 4053x1 32424 double J 4053x1 32424 double L 1x1 8 double a 1x1 8 double ab1 1x1 8 double alpha 1x1 8 double b 1x1 8 double c 1x1 8 double chi 1x1 8 double cmdout 1x33 66 char h 1x1 32 function_handle i 1x1 8 double k 1x1 8 double m 1x1 8 double r 201x201 323208 double t 201x201 323208 double v 1x1 32 function_handle x 201x201 323208 double y 201x201 323208 double
h11=integral(h, 0, 10); %inf
Arrays have incompatible sizes for this operation.

Error in solution (line 77)
h=@(t1)((t1-sqrt(t1.^2+k.^2)).^(-1).* (t1.*(exp(-sqrt(t1.^2+k.^2).*(r.*cos(t)+ab1))-exp(-t1.*(r.*cos(t)+ab1))).*(((-1).^(i-1).*t1.^(i-1).*exp(-ab1.*t1)./factorial( i ))+((-1).^(i).*sqrt(pi.*k./2/t1.^2).*exp(-ab1.*sqrt(t1.^2+k.^2)).*gegenbauerC(i,-1./2, sqrt(t1.^2+k.^2)./k))).*t1.*besselj(1,t1.*r.*sin(t))));

Error in integralCalc/iterateScalarValued (line 314)
fx = FUN(t);

Error in integralCalc/vadapt (line 132)
[q,errbnd] = iterateScalarValued(u,tinterval,pathlen);

Error in integralCalc (line 75)
[q,errbnd] = vadapt(@AtoBInvTransform,interval);

Error in integral (line 87)
Q = integralCalc(fun,a,b,opstruct);
r is 201 x 201 and t is the same size, and ab1 is scalar, so r.*cos(t)+ab1 is well defined and returns 201 x 201.
t1 is the parameter passed in by integral() . integral() passes in a vector of varying length -- it is not even the same length for every invocation of the function within one integral() call. The (t1-sqrt(t1.^2+k.^2)).^(-1).* (t1.*(exp(-sqrt(t1.^2+k.^2) parts of the expression are well-formed, but of unknown size -- in particular they are probably not the same size as (r.*cos(t)+ab1)
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.
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

Produkte

Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by