error >> Matrix dimensions must agree. How to fix
15 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello,
I have script:
d=0.025:0.0025:1; % d=0.125*Lambda to 12.5*Lambda
Lambda=1;
% Ga function
Lambda=0.2;l1= Lambda/4;zi=l1;si=1;k=(2*pi)/Lambda;
z=0:Lambda/400:Lambda/4;
y= sqrt(d.^2+(z-zi));
Gfun=@(z)(1./y).*exp(-1i.*k.*y).*exp(-1i.*k.*si.*z);
% R=sqrt(d^2+(z-zi));
% evaluate the integral from z=0 to l1
Ga=integral(Gfun,0,Lambda/4);
Question? Why i got message "Matrix dimensions must agree"? and how to fix it??
0 commentaires
Réponses (3)
Anjaneyulu Bairi
le 23 Avr 2024
Modifié(e) : Anjaneyulu Bairi
le 23 Avr 2024
Hi,
Below line causing the error and it says "z" and "zi" are incompatible sizes for this operation.
y= sqrt(d.^2+(z-zi));
The "d.^2" variable has size of 1*391 double and "(z-zi)" has size of 1*101 double. Make sure you have declared these variables correctly to avoid these kind of errors.
You can refer below documentation links to know more information on arrays
I hope above information is helpful to resolve your query
0 commentaires
Lokesh
le 23 Avr 2024
Hi Ofer,
It appears that you are encountering the error "Matrix dimensions must agree" while running your MATLAB script.
This issue arises because the dimensions of "d.^2" (1x391) and "z-zi" (1x101) in the equation "y= sqrt(d.^2+(z-zi));" are not compatible, leading to the error.
Please refer to the following MATLAB documentation for more information about compatible array sizes for basic operations:
Hope this helps!
0 commentaires
Torsten
le 23 Avr 2024
Modifié(e) : Torsten
le 23 Avr 2024
z doesn't need to be prescribed in array form because you integrate with respect to z. Here I assume that the integration variable and the z in the expression for y are the same.
If you mean to evaluate your integral for the d-values that you defined, you can use
d=0.025:0.0025:1; % d=0.125*Lambda to 12.5*Lambda
% Ga function
Lambda=0.2;l1=Lambda/4;zi=l1;si=1;k=(2*pi)/Lambda;
y= @(d,z)sqrt(d^2+(z-zi));
Gfun =@(d,z)(1./y(d,z)).*exp(-1i.*k.*y(d,z)).*exp(-1i.*k.*si.*z);
Ga=arrayfun(@(d)integral(@(z)Gfun(d,z),0,Lambda/4),d);
plot(d,[real(Ga);imag(Ga)])
0 commentaires
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!