从学长那里获得了以下代码老是报错32行Function definitions are not permitted in this context.
clear;clc;
disp('A*开始搜索路径......')
%% 画一个方形地图
map.XYMAX=50; % 地图尺寸
map.start=[5,1]; % 起点坐标
map.goal=[45,45]; % 终点坐标
genGrid(map); % 绘制地图
hold on;
obstacle = GetBoundary(map); %边界数据
nObstacle = 60; %在地图中随机加入XX个障碍物
obstacle = GetObstacle(nObstacle,obstacle,map);%障碍物和边界坐标
obstacle = [obstacle;10 4;10 5;10 6;10 7;10 8];
obstacle = [obstacle;11 4;11 5;11 6;11 7;11 8];
obstacle = [obstacle;12 4;12 5;12 6;12 7;12 8];
obstacle = [obstacle;13 4;13 5;13 6;13 7;13 8];
obstacle = [obstacle;20 20;20 19;20 18;20 17;];
obstacle = [obstacle;25 20;25 19;25 18;25 17;25 16;25 15;25 14;25 13;25 21;25 22;25 23;25 24;25 25;25 26;25 28;25 27];
obstacle = [obstacle;25 29;25 30;25 31;25 32;25 33;25 34;25 38];
%% 画出障碍点
fillPlot(obstacle,[0 0 0]);
%% 调用算法画出路径
path=AStar(obstacle,map);%A*算法
if length(path)>=1
plot(path(:,1),path(:,2),'Color','y','LineWidth',2);
end
%% 获得地图的边界的坐标
function boundary=GetBoundary(map)
boundary=zeros((map.XYMAX+2)*4,2);
for i1=0:(map.XYMAX+1)
boundary(i1+1,:)=[0 i1];
end
for i2=0:(map.XYMAX+1)
boundary(i2+i1+1,:)=[i2 0];
end
for i3=0:(map.XYMAX+1)
boundary(i3+i2+i1+1,:)=[map.XYMAX+1 i3];
end
for i4=0:(map.XYMAX+1)
boundary(i4+i3+i2+i1+1,:)=[i4 map.XYMAX+1];
end
end
%% 随机生成障碍点的坐标集合
function obstacle=GetObstacle(nob,obstacle,map)
ob = round(rand([nob,2])*map.XYMAX);
% 生成的障碍点有可能是和start点和goal点坐标重合的,
% 需要删除,removeInd为重合点的数组索引index
removeInd=[];
for io=1:length(ob(:,1))
if(isequal(ob(io,:),map.start) || isequal(ob(io,:),map.goal))
removeInd=[removeInd;io];
end
end
ob(removeInd,:)=[];
obstacle=[obstacle;ob];
end
跪求大佬解答如何解决。
function必须定义在函数文件内,不能定义在脚本文件内
即
function要么必须在一个m文件的第一行,把这m文件定义成函数文件
要么放在这个函数文件主函数的end后面,作为该函数文件的子函数
要在一般的脚本文件内定义“函数”,需要用内联或者匿名的办法
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y