与 mex 文件关联的未定义函数
undifined function associated to a mex file
我正在使用 Matlab 代码(不是我开发的)调用与 mex 文件关联的函数(它们具有相同的名词)。但是,我收到一条错误消息,指出该函数未定义。
在调用这个函数之前是否应该执行指定的命令? (我正在使用 MAC OS X 和 Matlab R 2016a)。
这是代码,错误在调用函数 fastmarchmex 的行(我记得 fastmarchmex.mexw64 和 32 在当前文件夹中):
rootdir = fileparts(mfilename('fullpath'));
addpath(fullfile(rootdir,'util'));
addpath(fullfile(rootdir,'sihks'));
load(fullfile(rootdir,'shapes','0001.scale.1.mat'),'shape'
%%-------------------------------------------------------------------
%% SIHKS signature
%%-------------------------------------------------------------------
fprintf('preprocessing');
shape.idxs = compute_vertex_face_ring(shape.TRIV');
ndesc = 5;
[desc,shape] = signature(shape,'sihks');
fprintf('.');
%%-------------------------------------------------------------------
%% ISC settings
%%-------------------------------------------------------------------
rad = 10; % radius used for descriptor construction
nbinsr = 5; % number of rings
nbinsth = 16; % number of rays
rr = [1:nbinsr]/nbinsr*rad;
th = [1:nbinsth]/nbinsth*2*pi;
fhs = 2; %% factor determining hardness of scale
quantization
fha = .01; %% factors determining hardness of angle
quantization
**shape.f_dns = fastmarchmex('init', int32(shape.TRIV-1),
double(shape.X(:)), double(shape.Y(:)), double(shape.Z(:)));**
vertex = 701;
shape =
fast_marching(vertex,shape,'vertex',0,1,shape.f_dns);
[in_ray,in_ring,shp,geod,directions]= get_net(shape,vertex,'scales',
[0,rr],'N_rays',length(th),'fhs',fhs,'fha',fha);
[dec_net] = get_descriptor_from_net(in_ray,in_ring,desc,shape.Av);
fastmarchmex('deinit', shape.f_dns);
%% end of code, visualization of results
a = -82.5000;
v = 18;
dind = 1;
figure(1); clf; show_shape(shape,desc(:,dind));
hold on,scatter3(geod{1}(1,1),geod{1}(2,1),geod{1}
(3,1),'filled','SizeData',150,'Cdata',[1,0,0])
for k=[1:length(geod)]
hold on;
h = plot3(geod{k}(1,:),geod{k}(2,:),geod{k}(3,:));
set(h,'Color',[0 0 0],'LineWidth',2);
end
for r = [1:length(rr)]
plot_ring(shape,rr(r));
end
title('Net around vertex')
view(-82.50,18)
figure(2); clf; plot_polarhist(squeeze(desc_net(dind,:,:)),rr,th,0);
MATLAB R13 及更高版本,支持 Mac OS X,使用 .mexmac 扩展名
在 Mac.
所以,你应该为 Mac 重新编译你的 Mex 文件,现在你有 Windows 版本
我正在使用 Matlab 代码(不是我开发的)调用与 mex 文件关联的函数(它们具有相同的名词)。但是,我收到一条错误消息,指出该函数未定义。
在调用这个函数之前是否应该执行指定的命令? (我正在使用 MAC OS X 和 Matlab R 2016a)。
这是代码,错误在调用函数 fastmarchmex 的行(我记得 fastmarchmex.mexw64 和 32 在当前文件夹中):
rootdir = fileparts(mfilename('fullpath'));
addpath(fullfile(rootdir,'util'));
addpath(fullfile(rootdir,'sihks'));
load(fullfile(rootdir,'shapes','0001.scale.1.mat'),'shape'
%%-------------------------------------------------------------------
%% SIHKS signature
%%-------------------------------------------------------------------
fprintf('preprocessing');
shape.idxs = compute_vertex_face_ring(shape.TRIV');
ndesc = 5;
[desc,shape] = signature(shape,'sihks');
fprintf('.');
%%-------------------------------------------------------------------
%% ISC settings
%%-------------------------------------------------------------------
rad = 10; % radius used for descriptor construction
nbinsr = 5; % number of rings
nbinsth = 16; % number of rays
rr = [1:nbinsr]/nbinsr*rad;
th = [1:nbinsth]/nbinsth*2*pi;
fhs = 2; %% factor determining hardness of scale
quantization
fha = .01; %% factors determining hardness of angle
quantization
**shape.f_dns = fastmarchmex('init', int32(shape.TRIV-1),
double(shape.X(:)), double(shape.Y(:)), double(shape.Z(:)));**
vertex = 701;
shape =
fast_marching(vertex,shape,'vertex',0,1,shape.f_dns);
[in_ray,in_ring,shp,geod,directions]= get_net(shape,vertex,'scales',
[0,rr],'N_rays',length(th),'fhs',fhs,'fha',fha);
[dec_net] = get_descriptor_from_net(in_ray,in_ring,desc,shape.Av);
fastmarchmex('deinit', shape.f_dns);
%% end of code, visualization of results
a = -82.5000;
v = 18;
dind = 1;
figure(1); clf; show_shape(shape,desc(:,dind));
hold on,scatter3(geod{1}(1,1),geod{1}(2,1),geod{1}
(3,1),'filled','SizeData',150,'Cdata',[1,0,0])
for k=[1:length(geod)]
hold on;
h = plot3(geod{k}(1,:),geod{k}(2,:),geod{k}(3,:));
set(h,'Color',[0 0 0],'LineWidth',2);
end
for r = [1:length(rr)]
plot_ring(shape,rr(r));
end
title('Net around vertex')
view(-82.50,18)
figure(2); clf; plot_polarhist(squeeze(desc_net(dind,:,:)),rr,th,0);
MATLAB R13 及更高版本,支持 Mac OS X,使用 .mexmac 扩展名 在 Mac. 所以,你应该为 Mac 重新编译你的 Mex 文件,现在你有 Windows 版本