
科学
元周民
这个作者很懒,什么都没留下…
展开
-
matlab中高精度计算函数vpa与非厄米矩阵本征值的求解
matlab中高精度计算函数vpa原创 2025-01-04 15:26:30 · 525 阅读 · 0 评论 -
对colormap的那个N行三列矩阵进行线性插值的代码(三维scatter3中的确可以看到是正确插好值了的)
【代码】对colormap的那个N行三列矩阵进行线性插值的代码(三维scatter3中的确可以看到是正确插好值了的)原创 2024-12-07 16:08:15 · 116 阅读 · 0 评论 -
紧束缚开链驻波动画(可生成gif图片)
【代码】紧束缚开链驻波动画。原创 2024-10-30 21:58:59 · 123 阅读 · 0 评论 -
运用小矩阵作为元素构建大矩阵(matlab函数,未详细测试)
如题原创 2022-07-01 11:09:19 · 1716 阅读 · 0 评论 -
一个有趣的极限(会在求标量格林函数的Ewald级数时且处理它的奇点的时候会遇到)
如题目所示,这就是要表达的意思原创 2022-06-29 16:23:02 · 135 阅读 · 0 评论 -
一个和二维泊松求和有关的公式(推导Ewald级数中有用,运用了2D泊松求和公式,傅里叶变换的位移性质)
如题所示原创 2022-06-28 21:24:57 · 534 阅读 · 0 评论 -
matlab复误差函数的高效计算(有官方背书)
matlab复误差函数的高效计算,可以和mathematica的官方函数对比验证下,有权威官方背书,是参考网站的代码改写而来。原创 2022-06-27 17:40:46 · 653 阅读 · 0 评论 -
带选择程序(未测试)
function [band_sto]=choice_band(vec,val,band_index)%根据band_index选择能带%vec,val是最原始的vec,valval=real(sqrt(diag(val)));%w/c,,real可改,决定画能带的实部还是虚部[~,order]=sort(val);%w/cband_sto=zeros(size(vec,1),length(band_index));for count=1:length(band_index)tp=band.原创 2022-01-05 17:14:49 · 227 阅读 · 0 评论 -
matlab画圆函数
function [] = circle(x,y,r)%画圆函数% circle(0,0,4) ;grid on% x y是中心,r是半径rectangle('Position',[x-r,y-r,2*r,2*r],'Curvature',[1,1])axis equal%为了修饰曲线的颜色,宽度,圈盘填充颜色等,可以设置其他参数等,例如%'edgecolor','b',其中edgecolor表示边框颜色,后面的b是颜色参数值;%facecolor','r',其中facecolor表示内部填原创 2021-12-31 11:24:04 · 6363 阅读 · 0 评论 -
matlab angle函数
angle采用的算法:angle(z) = imag(log(z)) = atan2(imag(z), real(z)).原创 2021-12-29 11:19:01 · 2547 阅读 · 0 评论 -
一段判断点是否在多边形内的matlab代码
function [out]=shape_f(xx,yy,xp,yp)%xx、yy是输入的要判断的点,%xp 、yp是多边形的顶点(顺时针或逆时针,首尾相连)%xp、yp是向量%如果在多边形内或边上,out为1,否则为0out=double(inpolygon(xx,yy,xp,yp));end...原创 2021-12-23 16:52:38 · 575 阅读 · 0 评论 -
comsol提取的csv数据画能带图
clear;clc;c_const=299792458;%单位mX=csvread('F:\table_desk\COMSOL.VS.紧束缚\test_band1.csv',1);Y=csvread('F:\table_desk\COMSOL.VS.紧束缚\test_band2.csv',1);figure(2)scatter((X),abs(real(Y)).*(5e-3)/(c_const),'r.')axis tight原创 2021-12-23 16:48:39 · 1005 阅读 · 0 评论 -
画格点程序
function []=point_figure()a1=[10,0];a2=[0,10];site=[];for m=-6:6 for n=-6:6 vec=m*a1+n*a2; site=[site;sq(vec(1),vec(2),4)]; endendscatter(site(:,1),site(:,2),'bo','filled') axis equal endfunction [ou原创 2021-11-01 17:12:07 · 168 阅读 · 0 评论 -
matlab确定特定一行在矩阵中的位置
A=[122 51 41]B=[122 49 41; 122 51 41; 121 49 42; 122 49 42][~,ind]=ismember(A,B,'rows')原创 2021-10-24 09:57:33 · 2287 阅读 · 0 评论 -
Floquet-傅里叶方法里面一个积分的验证小程序
%Floquet-傅里叶-方法里面积分的一个验证小程序function []=main_jifen()clear;clcfor jj=-100:1:100 disp(['jj=',num2str(jj),';',newline]) mm=jifen(jj) disp([newline,'--------------'])endendfunction [out1]=jifen(delta)syms vac w t k T%delta=3;m=2*vac*c.原创 2021-09-16 21:19:46 · 317 阅读 · 0 评论 -
一个matlab小函数,寻找矩阵最小n个值的位置(没有详细测试)
function [out]=find_M(M,n)%这个函数是找到矩阵M中最小的n个点的位置[u,~]=size(M);sto_v=[];for ii=1:u sto_v=[sto_v,M(ii,:)];endsort_v=unique(sort(sto_v));if length(sort_v)<n sto2=sort_v(:); disp('n超过了矩阵不重复元素数')elsesto2=sort_v(1:n);endclear iisto_si原创 2021-09-03 10:51:25 · 1989 阅读 · 0 评论 -
正倒空间基矢转换
matlab代码:%正空间、倒空间转换clear;clc;close all%%%%%%%%%%%%%%a=sym(1,'f');%晶格常数%%%%%%%%%%%%%% a1=[sqrt(3)/2,1.5,0].*a;%正空间基矢 a2=[-sqrt(3)/2,1.5,0].*a;%三维%a1=[a,0,0];a2=[0,a,0];a3=[0,0,1];%单位向量A=abs(a3*cross(a1,a2)');s=2*pi./A;b1(1,1)=a2(1,2);b1(1,2)=-a原创 2021-08-02 16:37:38 · 1574 阅读 · 3 评论 -
很好的画格点的代码
function []=main_surper_cell()n=10;a = 1; %%%%%%%%%%%%%%%定义原胞基矢%%%%%%%%%%%%%% a1 = a* [ sqrt(3)/2 1/2 ]; a2 = a* [-sqrt(3)/2 1/2 ]; a3 = a* [ 0 0 1]; %%%%%%%%%%%%%%%定义三个格点的位置%%%%%%%%%%%%%% u1 = a*[sqrt(3)/6 0 ]; u2 = a*[5*sqrt(3)/12 a/4 ]; u3 =原创 2021-07-17 21:45:57 · 158 阅读 · 0 评论 -
光子晶体介质柱的讨论
矩形介质柱的kkk空间相对介电常数计算:α(G)={αAf+αB(1−f),G=0(αA−αB)P(G),G≠0\alpha(G)=\left\{\begin{array}{l}\alpha_{\mathrm{A}} f+\alpha_{\mathrm{B}}(1-f), G=0 \\\left(\alpha_{\mathrm{A}}-\alpha_{\mathrm{B}}\right) P(G), \quad G \neq 0\end{array}\right.α(G)={αAf+αB(1原创 2021-07-15 19:24:07 · 426 阅读 · 0 评论 -
画kagome格子的matlab程序
function []=main()a=5;%晶格常数d1=a*[1,0];%正空间基矢d2=a*[0.5,-sqrt(3)/2];para=20;sto=[];for u=0:para for v=0:para D=u*d1+v*d2; [p]=triangle_fun(D,0.5*a); sto=[sto;p]; endendscatter(sto(:,1),sto(:,2),'o')end%下面的子程序可自己编原创 2021-06-25 09:32:11 · 847 阅读 · 0 评论 -
matlab中一个显示根号的技巧
原创 2021-06-24 16:10:02 · 6593 阅读 · 0 评论 -
光子晶体中的平面波展开法学习
把平面波展开法当做一个响应器,即有输入和输出,先谈它的输入,输入有:1.介质柱的相对介电常数2.背景的相对介电常数3.填充率(介质柱横截面积比上正格子中二维原胞面积,三角格子光子晶体的原胞是一个菱形,正方格子光子晶体的原胞是一个矩形)4.圆形介质柱的半径R(但是介质柱可能不是圆形甚至是不规则的形状,这个问题留在后面讨论),这个半径一般表示为晶格常数a的倍数.5.还有一个参数和计算过程中运用的平面波的数目有关,我们假定它是n,平面波展开法中平面波的数目越多计算结果就会越精确,但我不确定这是否是绝对的原创 2020-11-05 21:48:54 · 3609 阅读 · 0 评论