plot(k, E, 'b')是绘制$k$空间中的能带结构图,其中k表示横坐标,E表示纵坐标,'b'表示线条颜色为蓝色。如果该代码出错,可能是因为k和E的长度不一致,或者没有正确计算得到E,怎么让k和E长度一致
时间: 2024-02-20 07:56:37 浏览: 13
a,b拟合以及画图的代码
确保`k`和`E`的长度一致,需要先检查一下它们的维度,可以使用`size`函数查看其维度。假设`k`和`E`的维度不一致,可以使用`linspace`函数生成均匀分布的`k`值,并利用`interp1`函数在这些点上插值得到对应的`E`值。具体的代码如下:
```MATLAB
clear all;
clc;
t = 1; % hopping parameter
a = 1; % lattice constant
k = linspace(-pi/a, pi/a, 100); % wave vector
N = length(k); % number of points in k-space
% define the tight binding Hamiltonian
H = zeros(N,N);
for i=1:N-1
H(i,i+1) = -t;
H(i+1,i) = -t;
end
H(1,N) = -t;
H(N,1) = -t;
% calculate the eigenvalues of the Hamiltonian
E = eig(H);
% interpolate E to match the length of k
k_interp = linspace(min(k), max(k), length(E));
E_interp = interp1(k, E, k_interp);
% plot the band structure
plot(k_interp, E_interp, 'b');
hold on;
plot(k_interp, zeros(size(k_interp)), 'k--');
xlabel('k');
ylabel('E');
title('Band structure');
```
在代码中,我们首先使用`linspace`函数生成100个均匀分布的$k$值,代表了$k$空间中的波矢。接着定义了紧束缚哈密顿量$H$,和前面的代码一样。使用`eig`函数计算该哈密顿量的本征值$E$,并在$k$的范围内插值得到对应的$E$值。最后,使用`plot`函数绘制出能带结构。
阅读全文