function [ W_ind, W_dat ] = medfuncSystemMatrix( theta, N, P_num, delta )
%UNTITLED Summary of this function goes here
% Detailed explanation goes here
N2 = N^2;
M = length(theta)*P_num;
W_ind = zeros(M, 2*N);
W_dat = zeros(M, 2*N);
t = (-(P_num-1)/2:(P_num-1)/2)*delta;
if N<=10 && length(theta)<=5
x = (-N/2:1:N/2)*delta;
y = (-N/2:1:N/2)*delta;
plot(x,meshgrid(y,x),'k');
hold on;
plot(x,meshgrid(x,y),y,'k');
axis([-N/2-5, N/2+5, -N/2-5, N/2+5]);
text(0,-0.4*delta, '0');
end
for jj=1:length(theta)
for ii=1:1:P_num
u = zeros(1,2*N);
v = zeros(1,2*N);
th = theta(jj);
if th >= 180 || th<0
error('输入角度有问题');
elseif th==90
if N<=10 && length(theta)<=5
xx = (-N/2-2:0.01:N/2+2)*delta;
yy = t(ii);
plot(xx,yy,'b');
hold on
end
if t(ii)>=N/2*delta || t(ii)<=-N/2*delta
continue;
end
kout = N*ceil(N/2 - t(ii)/delta);
kk = (kout - (N-1)):1:kout;
u(1:N) = kk;
v(1:N) = ones(1,N)*delta;
elseif th==0
if N<=10 && length(theta)<=5
yy = (-N/2-2:0.01:N/2+2)*delta;
xx = t(ii);
plot(xx,yy,'b');
hold on
end
if t(ii)>=N/2*delta || t(ii)<=-N/2*delta
continue;
end
kin = ceil(N/2+t(ii)/delta);
kk = kin:N:(kin+N*(N-1));
u(1:N) = kk;
v(1:N) = ones(1,N)*delta;
else
if th>90
th_temp = th-90;
elseif th<90
th_temp = 90-th;
end
th_temp = th_temp*pi/180;
b = t/cos(th_temp);
m = tan(th_temp);
y1d = -N/2*delta*m + b(ii);
y2d = N/2*delta*m + b(ii);
if N<=10 && length(theta)<=5
xx = (-N/2-2:0.01:N/2+2)*delta;
if th<90
yy = -m*xx + b(ii);
elseif th>90
yy = m*xx + b(ii);
end
plot(xx,yy,'b');
hold on;
end
if y1d<-N/2*delta & y2d<-N/2*delta
continue;
end
if y1d>N/2*delta & y2d>-N/2*delta
continue;
end
if y1d<=N/2*delta & y1d>=-N/2*delta & y2d>N/2*delta
yin = y1d;
d1 = yin - floor(yin/delta)*delta;
kin = N*floor(N/2 - yin/delta) + 1;
yout = N/2*delta;
xout = (yout-b(ii))/m;
kout = ceil(xout/delta) + N/2;
elseif y1d<=N/2*delta & y1d >= -N/2*delta & y2d >= -N/2*delta & y2d<N/2*delta
yin = y1d;
d1 = yin - floor(yin/delta)*delta;
kin = N*floor(N/2-yin/delta) + 1;
yout = y2d;
kout = N * floor(N/2 - yout/delta) + N;
elseif y1d<-N/2*delta & y2d>N/2*delta
yin = -N/2*delta;
xin = (yin-b(ii))/m;
d1 = N/2*delta + (floor(xin/delta)*delta*m + b(ii));
kin = N*(N-1) + N/2 + ceil(xin/delta);
yout = N/2*delta;
xout = (yout - b(ii))/m;
kout = ceil(xout/delta) + N/2;
elseif y1d<-N/2*delta & y2d>=-N/2*delta & y2d<N/2*delta
yin = -N/2*delta;
xin = (yin-b(ii))/m;
d1 = N/2*delta + (floor(xin/delta)*delta*m + b(ii));
kin = N*(N-1) + N/2 + ceil(xin/delta);
yout = y2d;
kout = N*floor(N/2 - yout/delta) + N;
else
continue;
end
k = kin;
c=0;
d2 = d1 + m*delta;
while k>=1 && k<=N2
c = c + 1;
if d1>=0 && d2 >delta
u(c) = k;
v(c) = (delta-d1)*sqrt(m^2+1)/m;
if k>N && k~=kout
k = k - N;
d1 = d1 - delta;
d2 = d1 + m*delta;
else
break;
end
elseif d1>=0 && d2 == delta
u(c) = k;
v(c) = delta*sqrt(m^2 + 1);
if k>N && k~=kout
k = k-N+1;
d1 = 0;
d2 = d1 + m*delta;
else
break;
end
elseif d1>=0 && d2<delta
u(c) = k;
v(c) = delta*sqrt(m^2+1);
if k~=kout
k = k+1;
d1 = d2;
d2 = d1 + m*delta;
else
break;
end
elseif d1<=0 && d2 >=0 && d2<=delta
u(c) = k;
v(c) = d2*sqrt(m^2+1)/m;
if k~=kout
k = k+1;
d1 = d2;
d2 = d1 + m*delta;
else
break;
end
elseif d1<=0 && d2>delta
u(c) = k;
v(c) = delta*sqrt(m^2+1)/m;
if k>N && k~=kout
k = k - N;
d1 = -delta + d1;
d2 = d1 + m*delta;
else
break;
end
end
end
if th < 90
u_temp = zeros(1,2*N);
if any(u) == 0
continue;
end
ind = u>0;
for k=1:length(u(ind))
r = rem(u(k),N);
if r==0
u_temp(k) = u(k) - N + 1;
else
u_temp(k) = u(k) - 2*r + N + 1;
end
end
u = u_temp;
end
end
W_ind((jj-1)*P_num+ii,:) = u;
W_dat((jj-1)*P_num+ii,:) = v;
end
end
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
ML-EM算法 EM算法(Expectation Maximization Algorithm,期望极大算法)是一种解决优化问题的迭代算法,用于求解含有隐变量的概率模型参数的极大似然估计(MLE)或极大后验概率估计(MAP)。EM算法是一种比较通用的参数估计算法,被广泛用于支持向量机(SMO算法)、朴素贝叶斯、GMM(高斯混合模型)、K-means(K均值聚类)和HMM(隐马尔可夫模型)的参数估计。 理解EM算法(例子) 在统计学中,概率用于在已知一些参数的情况下,预测接下来的所得到的结果;而似然性则是用于在已知某些观测所得到的结果时,对有关事物的性质的参数进行估计。 EM算法和极大似然估计的前提是一样的,都要假设数据总体的分布,如果不知道数据分布,是无法使用EM算法的。 三硬币模型 假设有3枚硬币A,B,C,这些硬币正面出现的概率分别是π \piπ,p pp和q qq。进行如下掷硬币试验:先掷硬币A,根据其结果选出硬币B或硬币C,正面选硬币B,反面选硬币C;然后掷选出的硬币,掷硬币的结果,正面记作1,反面记作0;独立重复n此试验,观测结果: 1 , 1 , 0 ,
资源推荐
资源详情
资源评论
收起资源包目录
ML-EM.rar (5个子文件)
ML-EM
medfuncMlem_2.m 1KB
medfuncParallelBeamForwardProjection.m 993B
medfuncMlem_1.m 419B
medfuncSystemMatrix.m 6KB
ML_EM.m 848B
共 5 条
- 1
资源评论
拉姆哥的小屋
- 粉丝: 6042
- 资源: 132
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 什么是移动应用开发-关于移动应用开发的相关介绍
- 第二组汇报 PPT.pptx
- 什么是大数据开发-相关介绍-关于大数据开发的相关介绍
- 什么是软件测试-相关介绍-关于软件测试的相关介绍
- 前端开发-什么是前端开发-关于前端开发的一些相关介绍
- Sora AI-关于文生视频的使用场景说明
- suno AI文生视频的相关教程和介绍使用
- 什么是后端开发-关于后端开发的一些小介绍分享
- Jurassic Pack Vol. II Dinosaurs 侏罗纪包卷恐龙二号Unity游戏模型资源unitypackage
- Jurassic Pack Vol. III Dinosaurs 侏罗纪包卷恐龙三号Unity游戏模型资源unitypackag
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功