Matlab-绘图小知识点
matlab绘图时最好添加图形句柄,当我们需要擦除的时候,只需要擦除该句柄即可,而不需要擦除的图像则不需要添加图形句柄。为了提高程序性能和效率差,我们可以通过控制哪些图形需要被更新,并优化程序以适应特定的场景和需求。通过只擦除需要不断更新的图形,可以减轻matlab的计算量,从而提高程序的效率。这种方法可以在处理实时或交互性高的应用程序中非常有效,因为他只会重新计算和更新需要变化的部分,而不是重复进行固定不变的计算。
实例1
假设已经创建了一个图形并保存了它的句柄
% 创建一个简单的图形
figure;
plot([1,2,3,4], [2,4,1,3]);
% 获取图形的句柄
h = gcf; % gcf 用于获取当前图形的句柄
% 假设你想擦除这个图形
delete(h);
在这个实例中,我们首先创建了一个简单的图形,然后使用‘gcf’获取当前图形的句柄,将其保存在变量‘h’中,最后使用delete(h)将该图形擦除。
实例2
假如我们在一个函数里面包含了需要改变的绘图函数和不需要改变的绘图函数
以下实例就是不管绘图程序里面是否需要更新,当程序需要擦除的时候,matlab都将其擦除,并重新计算生成新的图像,这样子会降低matlab的效率,在无需反复绘图的事情上浪费了cpu资源。
//函数1
function pic = draw_picture(value1,value2,value3,fcla)
scatter3(x,y,z,'filled','b');hold on; //变化
scatter3(1,2,3,'filled','b');hold on; //不变
if(fcla)
cla;
end
end
//main函数
for i=1:100000
value1 = i;
value2 = i+1;
value3 = i+2;
draw_picture(value1,value2,value3,1); //擦除
end
实例3-基于实例2的基础上添加图形句柄,优化绘图程序
将所有需要擦除更新的绘图程序添加句柄,不需要改变的图形可以放到主程序前方作为场景。
function pic = draw_picture(value1,value2,value3)
draw = [draw scatter3(x,y,z,'filled','b')]; hold on; //变化
delete(draw);//删除句柄,即删除图形
end
//main函数
scatter3(1,2,3,'filled','b'); //不变
for i=1:100000
value1 = i;
value2 = i+1;
value3 = i+2;
draw_picture(value1,value2,value3);
end