Matrix dimensions must agree

조회 수: 1 (최근 30일)
Tito
Tito 2020년 3월 31일
답변: David Hill 2020년 3월 31일
Hi, I'm trying to plot a field, but it always shows me the next error:
Matrix dimensions must agree.
Error in codeH (line 24)
Hx = (((1j .* k .* a.^2 .* I0 .* cos(theta)) ./ (x.^2+(z-b).^2)) .* (1 + 1 ./ (1j .*
k .* sqrt(x.^2+(z-b).^2))) .* exp(-1j .* k .* sqrt(x.^2+(z-b).^2))) .*
sin(theta).*cos(phi);
The code that I'm using is this:
clear all
close all
clc
a = 0.4;
f = 10^6;
w = 2 .* pi .* f;
I0 = 1;
b = (0.4/2);
mu0 = 4 * pi * 1e-7;
e0 = 8.85e-12;
k = w .* sqrt( mu0 .* e0 );
theta = (-pi/2:pi/3:pi/2);
phi = (0:pi/2:2*pi);
xx = linspace(-1,0.1,1);
zz = xx;
[x,z] = meshgrid(xx,zz);
Hx = (((1j .* k .* a.^2 .* I0 .* cos(theta)) ./ (x.^2+(z-b).^2)) .* (1 + 1 ./ (1j .* k .* sqrt(x.^2+(z-b).^2))) .* exp(-1j .* k .* sqrt(x.^2+(z-b).^2))) .* sin(theta).*cos(phi);
Hz = (((1j .* k .* a.^2 .* I0 .* cos(theta)) ./ (x.^2+(z-b).^2)) .* (1 + 1 ./ (1j .* k .* sqrt(x.^2+(z-b).^2))) .* exp(-1j .* k .* sqrt(x.^2+(z-b).^2))) .* cos(theta);
quiver(x,z,abs(Hx),abs(Hz))
I'm kind of desperate right now

채택된 답변

David Hill
David Hill 2020년 3월 31일
Several problems I have noticed:
a = 0.4;
f = 10^6;
w = 2*pi*f;%scalar no need for .
I0 = 1;
b = (0.4/2);
mu0 = 4 * pi * 1e-7;
e0 = 8.85e-12;
k = w*sqrt(mu0*e0);%scalar no need for .
theta = linspace(-pi/2,pi/2,100);%this must be a consistent size based on your equation, use linspace
phi = linspace(0:2*pi,100);%consistent size
xx = linspace(-1,1,100);%not sure what you are doing here but size is only 1
zz = xx;
[x,z] = meshgrid(xx,zz);%this is now a 100x100 matrix
for k=1:100%you have to keep the size consistent
Hx(k,:) = (((1j .* k .* a.^2 .* I0 .* cos(theta)) ./ (x.^2+(z(k,:)-b(k,:)).^2)) .* (1 + 1 ./ (1j .* k .* sqrt(x.^2+(z(k,:)-b(k,:)).^2))) .* exp(-1j .* k .* sqrt(x.^2+(z(k,:)-b(k,:)).^2))) .* sin(theta).*cos(phi);
Hz(k,:) = (((1j .* k .* a.^2 .* I0 .* cos(theta)) ./ (x.^2+(z(k,:)-b(k,:)).^2)) .* (1 + 1 ./ (1j .* k .* sqrt(x.^2+(z(k,:)-b(k,:)).^2))) .* exp(-1j .* k .* sqrt(x.^2+(z(k,:)-b(k,:)).^2))) .* cos(theta);
end
quiver(x,z,abs(Hx),abs(Hz))
I'm not sure if everyting is now correct, but you get the idea.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Programming에 대해 자세히 알아보기

제품


릴리스

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by