使用matlab画图,增加一个停止按钮,在停止的同时给出数据点数和代码执行时间

% 初始化变量
x = [0.5;0.5]; % 初始位置向量
t1 = [0.86 0.03;-0.03 0.86]; % 转换矩阵1
t2 = [0.26 -0.25;0.24 0.23]; % 转换矩阵2
t3 = [-0.15 0.27;0.25 0.26]; % 转换矩阵3
t4 = [0 0;0 0.18]; % 转换矩阵4
b1 = [0;1.6]; % 偏差向量1
b2 = [0;0.45]; % 偏差向量2

c = [0.82 0.09 0.08 0.01]; % 各转换矩阵的选择概率
X = []; % 存储x坐标的数组
Y = []; % 存储y坐标的数组

% 创建图形窗口
figure;

% 创建一个停止按钮
stop = uicontrol('style','toggle','string','stop','value',0);

% 开始时间计时
tic;

pointsNum = 0; % 初始化数据点数量

% 循环10000次,模拟随机游走
for i=1:10000
    % 随机选择一个转换矩阵
    choice=randsample(4,1,true,c);
    if choice==1
        % 如果选择转换矩阵1
        x=t1*x+b1;
    elseif choice==2
        % 如果选择转换矩阵2
        x=t2*x+b1;
    elseif choice==3
        % 如果选择转换矩阵3
        x=t3*x+b2;
    else
        % 如果选择转换矩阵4
        x=t4*x;
    end
    % 记录游走后的坐标
    X(i)=x(1);
    Y(i)=x(2);
    
    % 更新数据点数量
    pointsNum = i;
    pause(0.005);
    % 检查停止按钮是否被按下
    A = [X;Y];
    if get(stop,'Value')

         % 定义旋转矩阵g
         g = [cos(30*pi/180) -sin(30*pi/180);sin(30*pi/180) cos(30*pi/180)];
         % 旋转A数组中的坐标
         A = g*A;
         % 绘制旋转后的坐标点
         plot(A(1,:),A(2,:),'r.');
         % 设置坐标轴颜色为绿色
         set(gca,'Color','green');
         drawnow 
        break;
    end
end

% 计算代码执行时间
elapsedTime = toc;

text(min(A(1,:)), min(A(2,:))-0.1, sprintf('数据点数:%d代码执行时间:%.5f秒', pointsNum, elapsedTime),'HorizontalAlignment','left','Color','blue');

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值