⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gen_figure.m

📁 椭圆拟合的相关介绍与数学运算方法
💻 M
字号:
function void = gen_figure (what);%GEN_FIGURE	Generate figures for fit-ell-lsq%%	produces figure for 'what'. (named <what>.ps)%  if (nargin < 1), what = []; end;  if (what == []), what = str2mat(...    'fig1',...    'rotinv1',...    'rotinv2',...    'fig2',...    'lyle1',...    'lyle2',...    'ageom1');  end;  for i=1:size(what,1),    str = deblank(what(i,:));    clf    clear global    if     (strcmp(str, 'rotinv1') | ...            strcmp(str, 'rotinv2') | ...            strcmp(str, 'rotinv3')),      axis ([-10,10,-8,12]);    elseif (strcmp(str, 'fig1')),      axis ([-2, 12, -2, 12]);    elseif (strcmp(str, 'fig2')),      axis ([-10, 40, -25, 20]);    elseif (strcmp(str, 'lyle1')),      axis ([-10, 40, -25, 20]);    elseif (strcmp(str, 'lyle2')),      axis ([0, 20, 0, 20]);    elseif (strcmp(str, 'ageom1')),      axis ([-25 25 -15 15]);    else      error ('unknown figure');    end;    axis ('equal');    hold    grid%----------------------------------------    if     (strcmp(str, 'rotinv1') | ...            strcmp(str, 'rotinv2') | ...            strcmp(str, 'rotinv3')),      X = gen_points ('spec2'); X1 = X;      plot (X(:,1), X(:,2), 'o');      if (strcmp(str, 'rotinv1')),        [z1, a1, b1, alpha1] = bookstein (X);      elseif (strcmp(str, 'rotinv2')),        [z1, a1, b1, alpha1] = algellipse (X);      elseif (strcmp(str, 'rotinv3')),        [z1, a1, b1, alpha1] = alge_simple (X);      end        drawellipse (z1, a1, b1, alpha1, '-');      if (strcmp(str, 'rotinv1')),        [z1, a1, b1, alpha1] = alge_simple (X);	drawellipse (z1, a1, b1, alpha1, '--');      end      X = X1;      t = [-6;-6]; phi = 0;      X = X + ones(size(X,1),1)*t';      Q = [cos(phi) -sin(phi); sin(phi) cos(phi)];      X = X*Q';      plot (X(:,1), X(:,2), 'o');      if (strcmp(str, 'rotinv1')),        [z, a, b, alpha] = bookstein (X);      elseif (strcmp(str, 'rotinv2')),        [z, a, b, alpha] = algellipse (X);      elseif (strcmp(str, 'rotinv3')),        [z, a, b, alpha] = alge_simple (X);      else      end              drawellipse (z, a, b, alpha, '-');      if (strcmp(str, 'rotinv1')),        [z, a, b, alpha] = alge_simple (X);	drawellipse (z, a, b, alpha, '--');      end%% compare      z2 = Q*(z1 + t);      alpha2 = alpha1 + phi;      drawellipse (z2, a1, b1, alpha2, '--');%%      X = X1;      t = [-4;4]; phi = pi/4;      X = X + ones(size(X,1),1)*t';      Q = [cos(phi) -sin(phi); sin(phi) cos(phi)];      X = X*Q';      plot (X(:,1), X(:,2), 'o');      if (strcmp(str, 'rotinv1')),        [z, a, b, alpha] = bookstein (X);      elseif (strcmp(str, 'rotinv2')),        [z, a, b, alpha] = algellipse (X);      elseif (strcmp(str, 'rotinv3')),        [z, a, b, alpha] = alge_simple (X);      end              drawellipse (z, a, b, alpha, '-');      if (strcmp(str, 'rotinv1')),        [z, a, b, alpha] = alge_simple (X);	drawellipse (z, a, b, alpha, '--');      end%% compare      z2 = Q*(z1 + t);      alpha2 = alpha1 + phi;      drawellipse (z2, a1, b1, alpha2, '--');%----------------------------------------    elseif (strcmp(str, 'fig1')),      X = [[1 2 5 7 9 3]', [7 6 8 7 5 7]'];      [z, a] = circle (X, [4;5], 2);      drawcircle (z, a);      [z, a] = algcircle (X);      drawcircle (z, a, '--');%----------------------------------------    elseif (strcmp(str, 'fig2')),      X = [[1 2 5 7 9 3 6 8]', [7 6 8 7 5 7 2 4]'];      [z, a, b, alpha] = algellipse (X);      drawellipse (z, a, b, alpha, '--');      Y = ellipse_residual (X, z, a, b, alpha);      res_algellipse = norm(Y)      [z, a] = parcircle (X, [4;5], 2, 0);      b = a/2; alpha = 0;      [z, a, b, alpha, phi, step] = pare (X, z, a, b, alpha, 3, 0);      drawellipse (z, a, b, alpha);      Y = ellipse_residual (X, z, a, b, alpha);      res_pare = norm(Y)%----------------------------------------    elseif (strcmp(str, 'lyle1')),      X = gen_points ('spec1');      [z, a, b, alpha, step] = lyle (X, 1);      drawellipse (z, a, b, alpha, '--');      Y = ellipse_residual (X, z, a, b, alpha);      res_lyle = norm(Y) %----------------------------------------    elseif (strcmp(str, 'lyle2')),      X = gen_points ('ginput1');      [z, a, b, alpha, step] = wate2 (X, 0);      drawellipse (z, a, b, alpha, '-.');      Y = ellipse_residual (X, z, a, b, alpha);      res_wate2 = norm(Y)      [z, a, b, alpha] = algellipse (X);      drawellipse (z, a, b, alpha, ':');      Y = ellipse_residual (X, z, a, b, alpha);      res_algellipse = norm(Y)      [z, a, b, alpha, step] = lyle (X, 1);      drawellipse (z, a, b, alpha);      Y = ellipse_residual (X, z, a, b, alpha);      res_lyle = norm(Y)       [z, a, b, alpha, phi, step] = pare (X, z, a, b, alpha, 2, 0);      drawellipse (z, a, b, alpha, '--');      Y = ellipse_residual (X, z, a, b, alpha);      res_pare = norm(Y) %----------------------------------------    elseif (strcmp(str, 'ageom1')),      X = gen_points ('ellipse_rand', 20, 10, 8, 0.2);      [z, a, b, alpha, step] = wate2 (X, 3);      drawellipse (z, a, b, alpha);      Y = ellipse_residual (X, z, a, b, alpha);      res_wate2 = norm(Y)       [z, a, b, alpha, phi, step] = pare (X, z, a, b, alpha, 2, 0);      drawellipse (z, a, b, alpha, '--');       Y = ellipse_residual (X, z, a, b, alpha);      res_pare = norm(Y) %----------------------------------------    else      error ('fatal');    end    plot (X(:,1), X(:,2), 'o');     cmdstr = ['print -deps ', str, '.ps'];    eval (cmdstr);  endend % gen_figure

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -