using meshgrid data in a matrix

2 次查看(过去 30 天)
I tried to use a meshgrid data in a matrix and then evalute eigenvalues. but i faced to "Dimensions of arrays being concatenated are not consistent." error can simeone help me?
my code is:
iform=complex(0.0,1.0);
g_k=2.*t1_tilda.*exp(-iform.*k_x.*a1x).*cos(k_y.*b/2)+t2_tilda.*exp(iform.*k_x.*a2x)+2.*t3_tilda.*exp(iform.*k_x.*a3x).*cos(k_y.*b/2)+t5_tilda.*exp(-iform.*k_x.*a5x);
f_k=4.*t4_tilda.*cos(k_x.*a/2).*cos(k_y.*b/2);
eps1=0:0.01:2;
eps2=0:0.01:2;
[e1,e2]=meshgrid(eps1,eps2);
H=[f_k+e1 g_k;conj(g_k) f_k+e1];
E=eig(H);
landa2=E(1);
landa1=E(2);
EG=landa2-landa1;
contour(e1,e2,EG,10000)
  2 个评论
KSSV
KSSV 2020-5-29
All the values are not given...show us the complete code.
mohammad mortezaie
mohammad mortezaie 2020-5-29
this is complete code
iform=complex(0.0,1.0);
t1=-1.22;
t2=3.665;
t3=-0.205;
t4=-0.105;
t5=-0.055;
alpha1x=0.4460;
alpha2x=0.0992;
alpha3x=0.7505;
alpha4x=0.3976;
alpha5x=0.7530;
alpha1y=0.5571;
alpha2y=0.0;
alpha3y=0.2461;
alpha4y=0.2280;
alpha5y=0.0;
alpha1z=0.0;
alpha2z=0.9052;
alpha3z=0.0;
alpha4z=0.3722;
alpha5z=0.2538;
b=3.37;
a1x=1.41763;
a2x=0.79732;
a3x=a1x+2*a2x;
a4x=a1x+a2x;
a5x=2*a1x+a2x;
a=2*(a1x+a2x);
k_x=0;
k_y=0;
epsilon_x=0;
epsilon_y=0;
epsilon_z=0;
t1_tilda=t1*(1-2*(alpha1x*epsilon_x+alpha1y*epsilon_y+alpha1z*epsilon_z));
t2_tilda=t2*(1-2*(alpha2x*epsilon_x+alpha2y*epsilon_y+alpha2z*epsilon_z));
t3_tilda=t3*(1-2*(alpha3x*epsilon_x+alpha3y*epsilon_y+alpha3z*epsilon_z));
t4_tilda=t4*(1-2*(alpha4x*epsilon_x+alpha4y*epsilon_y+alpha4z*epsilon_z));
t5_tilda=t5*(1-2*(alpha5x*epsilon_x+alpha5y*epsilon_y+alpha5z*epsilon_z));
g_k=2.*t1_tilda.*exp(-iform.*k_x.*a1x).*cos(k_y.*b/2)+t2_tilda.*exp(iform.*k_x.*a2x)+2.*t3_tilda.*exp(iform.*k_x.*a3x).*cos(k_y.*b/2)+t5_tilda.*exp(-iform.*k_x.*a5x);
f_k=4.*t4_tilda.*cos(k_x.*a/2).*cos(k_y.*b/2);
[m,n] = size(f_k) ;
eps1 = linspace(0,2,n) ;
eps2 = linspace(0,2,m) ;
[e1,e2] = meshgrid(eps1,eps2) ;
H=[f_k+e1 g_k;conj(g_k) f_k+e2];
E=eig(H);
landa1=E(1);
landa2=E(2);
EG=landa2-landa1;
contour(e1,e2,EG,100)

请先登录,再进行评论。

采纳的回答

KSSV
KSSV 2020-5-29
YOu should modify these lines:
eps1=0:0.01:2;
eps2=0:0.01:2;
[e1,e2]=meshgrid(eps1,eps2);
I hope that g_k, f_k are of same dimensions.
[m,n] = size(f_k) ;
eps1 = linspace(0,2,n) ;
eps2 = linspace(0,2,m) ;
[e1,e2] = meshgrid(eps1,eps2) ;
  3 个评论
KSSV
KSSV 2020-5-29
EG are Eigen values..it will be an array. You cannot use it to plot contour lines. To plot contour lines EG should be a matrix. You can try using diag(EG). But what exactly you want?
mohammad mortezaie
mohammad mortezaie 2020-5-29
My problem exactly is using meshgrid data's e1 and e2 in H matrix. I tried this code without puting e1 and e2 in matrix and code runes without error. So only question here is that how can i use this meshgrids in a matrix and dont face with error.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Surface and Mesh Plots 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by