我想计算两个点云之间的KL分歧但我得到以下错误,请帮助。

8视图(30天)
%读第一个点云
pc1 = pcread ( “C: \用户下载\ amitv \ \ fragment.ply” );
%读第二点云
pc2 = pcread ( “C: \用户下载\ amitv \ \ fragment.ply” );
% Downsample第一个点云
pc1_ds = pcdownsample (pc1, “gridAverage” ,0.1);
% Downsample第二点云
pc2_ds = pcdownsample (pc2, “gridAverage” ,0.1);
%显示downsampled第一个点云
图;pcshow (pc1_ds);
标题( “Downsampled第一点云” );
%显示downsampled第二点云
图;pcshow (pc2_ds);
标题( “Downsampled第二点云” );
%重塑位置矩阵列向量
location1 =重塑(pc1_ds.Location [], 1);
location2 =重塑(pc2_ds.Location [], 1);
%计算的PDF downsampled首先使用KDE点云
pdf1 = fitdist (location1、 “内核” , “内核” , “正常” , “万博1manbetx支持” , “无限” , “宽度” ,1 “亩” 0, “σ” 1);
%计算的PDF downsampled第二点云使用KDE
pdf2 = fitdist (location2、 “内核” , “内核” , “正常” , “万博1manbetx支持” , “无限” , “宽度” ,1 “亩” 0, “σ” 1);
%的PDF downsampled第一个点云
[f1,ξ1]= ksdensity (location1);
图;
情节(ξ1,f1);
标题( 的PDF Downsampled首先点云的 );
%的PDF downsampled第二点云
(f2,ξ2))= ksdensity (location2);
图;
图(2)、f2);
标题( 的PDF Downsampled第二点云” );
%定义KL散度函数
函数 dkl = kl_divergence (p, q)
dkl =总和(p。*(日志(p) -日志(q)));
结束
%计算KL差异两个pdf文件
kl = kl_divergence (pdf1 pdf2);
%打印KL散度
流( “KL分歧:% f \ n” 、kl);
errror:错误:文件:kld12。m: 49专栏:1
函数定义在脚本中必须出现在文件的末尾。
后将所有报表函数定义在第一个“kl_divergence”
本地函数定义。

答案(1)

阿苏
阿苏 2023年3月20日
嗨,阿米特,
移动这个函数定义的脚本将解决你的错误。
%定义KL散度函数
函数dkl = kl_divergence (p, q)
dkl =总和(p。*(日志(p) -日志(q)));
结束

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!