⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hs_eit_2.asv

📁 MATLAB二维电阻抗断层成像算法!用于医学成像,里面包括有限元剖分正问题,及反问题的算法.并且附有网络剖分数据表!
💻 ASV
字号:
% static (absolute) resistivity values. 
load meshdata  % Data for two different meshes.
%load hsmeshdata24_3
NNode1=max(size(Node1));                      %The number of nodes
NElement1=max(size(Element1));                %The number of element
NNode2=max(size(Node2));                      %The number of nodes
NElement2=max(size(Element2));                %The number of elements

g1=reshape([Node1.Coordinate],2,NNode1)';
H1=reshape([Element1.Topology],3,NElement1)';
g2=reshape([Node2.Coordinate],2,NNode2)';
H2=reshape([Element2.Topology],3,NElement2)';


L=16;					  % The number of electrodes.
%L=24
z=0.005*ones(L,1);			  % Contact impedances.
[II1,T]=Current(L,NNode2,'adj');	  % Adjacent current pattern.

%Load some data measured with the EIT system built in Kuopio
load bubble3.dat
meas=bubble3(1280-255:1280);
Uel=reshape(meas,16,16);

%load hs24tmpdata
%Uel=hs24tmpdata;

%load hs24_1
%Uel=hs24_1';

%load hsru16_0
%Uel=hsru_16_0;

Uel=RemoveVolt(Uel,L);

%%             PROCEDURE TO SOLVE THE INVERSE PROBLEM           %%

% Approximate the best homogenous resistivity.
time=cputime;
MeasPatt=-T;
%MeasPatt=[];
[Agrad,Kb,M,S,C]=hsFemMatrix(Node2,Element2,z);
Agrad1=Agrad*Ind2;
A=hsUpdateFemMatrix(Agrad,Kb,M,S,ones(NElement2,1));  
% The system matrix.
[Uref,p,r]=hsForwardSolution(NNode2,NElement2,A,C,T,MeasPatt,'real');
Urefel=Uref.Electrode;
Urefel=RemoveVolt(Urefel,L);

rho0=Urefel(:)\Uel(:);


A=UpdateFemMatrix(Agrad,Kb,M,S,1/rho0*ones(NElement2,1));  % The system matrix.
Uref=ForwardSolution(NNode2,NElement2,A,C,T,MeasPatt,'real',p,r);
Urefel=Uref.Electrode(:);
Urefel=RemoveVolt(Urefel,L);

rho=rho0*ones(size(Ind2,2),1);
J=Jacobian(Node2,Element2,Agrad1,Uref.Current,Uref.MeasField, ...
           rho,'real');
J=RemoveJacob(J,L);

% Regularisation parameter and matrix

alpha=0.001; 
R=MakeRegmatrix(Element1);
time=cputime-time
iter=6;

no=norm(Uel(:)-Urefel(:))^2+alpha*norm(R*rho)^2;
for ii=1:iter
    time=cputime;
 rho=rho+(J'*J+alpha*R'*R)\(J'*(Uel(:)-Urefel(:))-alpha*R'*R*rho);
 no=[no;norm(Uel(:)-Urefel(:))^2+alpha*norm(R*rho)^2];  %Error norm
 rhobig=Ind2*rho;
 A=UpdateFemMatrix(Agrad,Kb,M,S,1./rhobig);  % The system matrix.
 Uref=ForwardSolution(NNode2,NElement2,A,C,T,MeasPatt,'real',p,r);
 Urefel=Uref.Electrode;
 Urefel=RemoveVolt(Urefel,L);
 J=Jacobian(Node2,Element2,Agrad1,Uref.Current,Uref.MeasField,rho,'real');
 J=RemoveJacob(J,L);
 clf,Plotinvsol(rho,g1,H1);drawnow;
 time=cputime-time
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -