matlab绘图相关技巧记录

博客内容涉及Matlab编程中关于动态绘图与三维散点图的常见问题。在循环中使用figure(1)和holdon/off实现同一图形窗口连续绘图并清除旧图,但出现了无法清空上一次绘图的情况。同时,在尝试绘制三维散点图时,由于误用hold指令导致二维显示。解决方案包括正确使用delete函数删除图形对象以及避免在三维散点图中使用hold指令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.matlab fo循环 在一个figure上画图,实时清空上一次绘图

for i =  1:5:1800
    i
    one_view = prj(:,:,i);
    [judge,position] = JudgeView(one_view);
    figure(1);
    hold on;
    h1 = plot(one_view);
    title(['view :',num2str(i)])
    xlabel("channel number");
    ylabel("projection");
    h2 = scatter(position(:,1) ,position(:,2));
    grid on;
    hold off;
    pause(0.5);
    delete(h1);
    delete(h2);
end

2.在三维空间绘制散点时,明明时三维坐标,绘制出来的却是二维的图

原因是,使用了hold on ; hold off

    waterTemp = LwAll(:,:,viewIndex);
    alTemp = LmAll(:,:,viewIndex);
    OnePrj = prj(:,:,viewIndex);
    
    counter = 1;
    point = [];
    for i = 1:size(OnePrj,1)
        for j = 1:size(OnePrj,2)
            if(waterTemp(i,j) ~=0 || alTemp(i,j) ~= 0)
               point(counter,:) = [waterTemp(i,j),alTemp(i,j) ,OnePrj(i,j)];
               counter = counter +1;
            end
        end
    end
% %     Lw = reshape(waterTemp,[N_CHANNEL*16,1]);
% %     Lm = reshape(alTemp,[N_CHANNEL*16,1]);
% %     PrjValue = reshape(OnePrj,[N_CHANNEL*16,1]);
    
    figure(1);
    hold on;
    scatter3(point(:,1),point(:,2),point(:,3),'b*');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值