MATLAB中文论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 622|回复: 1|关注: 0

[未答复] 求代数重建技术源代码

[复制链接]

新手

5 麦片

财富积分


050


1

主题

2

帖子

0

最佳答案
发表于 2017-9-14 23:00:11 | 显示全部楼层 |阅读模式
谢谢大佬,有的能给一个吗?

MATLAB 基础讨论
版块优秀回答者

入门

98 麦片

财富积分


50500


10

主题

149

帖子

18

最佳答案
  • 关注者: 2
发表于 2017-9-15 08:21:11 | 显示全部楼层
本帖最后由 1105936347 于 2017-9-15 08:22 编辑

art嘛?
function x = LE_ART(A, b, x0, max_iter, eps)
% =======================================================================
% 函数功能:代数重建技术(ART)求解线性方程组
% 输入:
%  A:系数矩阵;
%  b:常数值;
%  x0:初始值;
%  max_iter:迭代次数
%  eps:精度
% 输出:
%  x:方程的解;
% =======================================================================
if nargin == 2
   x0 = zeros(size(b));
   max_iter = 10000;
   eps = 1e-6;
end
if nargin == 3
   max_iter = 10000;
   eps = 1e-6;
end
if nargin == 4
   eps = 1e-6;
end
x = x0;
Asum = sum(abs(A.*A), 2);   % 每行求和
Row = find(Asum > 0);
for k = 1:max_iter
   if  norm(A*x - b)/norm(b) <= eps
      disp(['迭代次数为:' num2str(k)]);
      return;
   end
   for j = 1:length(Row)
      i = Row(j);
      Ai = A(i, :  );
      x = x + (b(i) - Ai*x)*Ai'/Asum(i);   % 误差分配
   end
end
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

快速回复 返回顶部 返回列表