日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
      軟件
      軟件
      文章
      搜索

      首頁(yè)編程開(kāi)發(fā)其它知識(shí) → Matlab實(shí)現(xiàn)鼠標(biāo)寫字代碼

      Matlab實(shí)現(xiàn)鼠標(biāo)寫字代碼

      相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:本站整理時(shí)間:2010/12/28 0:57:54字體大。A-A+

      作者:佚名點(diǎn)擊:708次評(píng)論:0次標(biāo)簽: Matlab 矩陣

      • 類型:編程工具大。1.5M語(yǔ)言:中文 評(píng)分:1.2
      • 標(biāo)簽:
      立即下載

      最早的程序,實(shí)在忘了從哪里下載的了。能夠?qū)崿F(xiàn)鼠標(biāo)的手寫輸入,但是一些不連續(xù)的點(diǎn)。

      tmouse.m
      function tmouse(action)
      % TMOUSE 本例展示如何以Handle Graphics來(lái)設(shè)定滑鼠事件(Mouse
      % Events)的反應(yīng)指令(Callbacks)
      if nargin == 0
          action = 'start';
      end
      switch(action)
        % 開(kāi)啟圖形視窗
        case 'start',
         axis([0 1 0 1]);% 設(shè)定圖軸范圍
         box on;% 將圖軸加上圖框
         title('Click and drag your mouse in this window!');
         % 設(shè)定滑鼠按鈕被按下時(shí)的反應(yīng)指令為「tmouse down」
         set(gcf, 'WindowButtonDownFcn', 'tmouse down');

        % 滑鼠按鈕被按下時(shí)的反應(yīng)指令
        case 'down',
         % 設(shè)定滑鼠移動(dòng)時(shí)的反應(yīng)指令為「tmouse move」
         set(gcf, 'WindowButtonMotionFcn', 'tmouse move');
         % 設(shè)定滑鼠按鈕被釋放時(shí)的反應(yīng)指令為「tmouse up」
         set(gcf, 'WindowButtonUpFcn', 'tmouse up');
         % 列印「Mouse down!」訊息
         fprintf('Mouse down!\n');
        % 滑鼠移動(dòng)時(shí)的反應(yīng)指令
        case 'move',
         currPt = get(gca, 'CurrentPoint');
         x = currPt(1,1);
         y = currPt(1,2);
         line(x, y, 'marker', '.', 'EraseMode', 'xor');
         % 列印「Mouse is moving!」訊息及滑鼠現(xiàn)在位置
         fprintf('Mouse is moving! Current location = (%g, %g)\n', currPt(1,1), currPt(1,2));
        % 滑鼠按鈕被釋放時(shí)的反應(yīng)指令
        case 'up',
         % 清除滑鼠移動(dòng)時(shí)的反應(yīng)指令
         set(gcf, 'WindowButtonMotionFcn', '');
         % 清除滑鼠按鈕被釋放時(shí)的反應(yīng)指令
         set(gcf, 'WindowButtonUpFcn', '');
         % 列印「Mouse up!」訊息
         fprintf('Mouse up!\n');
      end
      end
       

      本人在Matlab 2010a上運(yùn)行過(guò)該程序tmouse.m,運(yùn)行結(jié)果截圖如下:

        

       之后有人在此基礎(chǔ)上,把畫(huà)點(diǎn)改成了連續(xù)的線段。

      本人覺(jué)得程序還有點(diǎn)小問(wèn)題,在此不再轉(zhuǎn)載。

      下面是本人改進(jìn)的程序,能夠?qū)崿F(xiàn)點(diǎn)擊左鍵輸入,右鍵顯示輸入的記錄結(jié)果。

      MouseDraw.m
      function  MouseDraw(action)
      % MouseDraw 本例展示如何以Handle Graphics來(lái)設(shè)定滑鼠事件
      % (MouseDraw Events)的反應(yīng)指令(Callbacks)

      % 本程序在鼠標(biāo)移動(dòng)非?鞎r(shí),不會(huì)造成畫(huà)“斷線”
      % global不能傳矩陣
      global InitialX InitialY FigHandle
      imSize = 200;
      if nargin == 0, action = 'start';   end

      switch(action)
          %%開(kāi)啟圖形視窗
          case 'start',
              FigHandle = figure('WindowButtonDownFcn','MouseDraw down');
              axis([1 imSize 1 imSize]);    % 設(shè)定圖軸范圍
      %         axis off;
              grid on;
              box on;     % 將圖軸加上圖框
              title('手寫體輸入窗');
      % %         fprintf('start');
              %%設(shè)定滑鼠按鈕被按下時(shí)的反應(yīng)指令為「MouseDraw down」
              % set(gcf, 'WindowButtonDownFcn', 'MouseDraw down'); 
      dlmwrite('IXT.txt', -10, 'delimiter', '\t', 'precision', 6);
              dlmwrite('IYT.txt', -10, 'delimiter', '\t', 'precision', 6);
              %%滑鼠按鈕被按下時(shí)的反應(yīng)指令
          case 'down',
              if strcmp(get(FigHandle, 'SelectionType'), 'normal')    %如果是左鍵
                  set(FigHandle,'pointer','hand');     
                  CurPiont = get(gca, 'CurrentPoint');
                  InitialX = CurPiont(1,1);
                  InitialY = CurPiont(1,2);
                  dlmwrite('IXT.txt', InitialX, '-append', 'delimiter', '\t', 'precision', 6);
                  dlmwrite('IYT.txt', InitialY, '-append', 'delimiter', '\t', 'precision', 6);
                  % 列印「MouseDraw down!」訊息
      % %             fprintf('MouseDraw down!\n');
                  % 設(shè)定滑鼠移動(dòng)時(shí)的反應(yīng)指令為「MouseDraw move」
                  set(gcf, 'WindowButtonMotionFcn', 'MouseDraw move');
                  set(gcf, 'WindowButtonUpFcn', 'MouseDraw up');
              elseif strcmp(get(FigHandle, 'SelectionType'), 'alt')   % 如果是右鍵
                  set(FigHandle, 'Pointer', 'arrow');
                  set( FigHandle, 'WindowButtonMotionFcn', '')
                  set(FigHandle, 'WindowButtonUpFcn', '')
                  fprintf('MouseDraw right button down!\n');
                  ImageX = importdata('IXT.txt');
                  ImageY = importdata('IYT.txt');
                  InputImage = ones(imSize);
                  roundX = round(ImageX);
                  roundY = round(ImageY);
                  for k = 1:size(ImageX,1)
                      if 0<roundX(k) && roundX(k)<imSize && 0<roundY(k) && roundY(k)<imSize
                          InputImage(roundX(k)-1:roundX(k)+2, roundY(k)-1:roundY(k)+2) = 0;
                      end
                  end
                  InputImage = imrotate(InputImage,90);       % 圖像旋轉(zhuǎn)90
                  figure(2);
                  imshow(InputImage);
              end
          %%滑鼠移動(dòng)時(shí)的反應(yīng)指令
          case 'move',
              CurPiont = get(gca, 'CurrentPoint');
              X = CurPiont(1,1);
              Y = CurPiont(1,2);
              % 當(dāng)鼠標(biāo)移動(dòng)較快時(shí),不會(huì)出現(xiàn)離散點(diǎn)。
              % 利用y=kx+b直線方程實(shí)現(xiàn)。
              x_gap = 0.1;    % 定義x方向增量
              y_gap = 0.1;    % 定義y方向增量
              if X > InitialX
                  step_x = x_gap;
              else
                  step_x = -x_gap;
              end
              if Y > InitialY
                  step_y = y_gap;
              else
                  step_y = -y_gap;
              end 
              % 定義x,y的變化范圍和步長(zhǎng)
              if abs(X-InitialX) < 0.01        % 線平行于y軸,即斜率不存在時(shí)
                  iy = InitialY:step_y:Y;
                  ix = X.*ones(1,size(iy,2));
              else
                  ix = InitialX:step_x:X ;    % 定義x的變化范圍和步長(zhǎng)
                  % 當(dāng)斜率存在,即k = (Y-InitialY)/(X-InitialX) ~= 0
                  iy = (Y-InitialY)/(X-InitialX).*(ix-InitialX)+InitialY;  
              end
              ImageX = [ix, X];
              ImageY = cat(2, iy, Y);
              line(ImageX,ImageY, 'marker', '.', 'markerSize',28, ...
                  'LineStyle', '-', 'LineWidth', 4, 'Color', 'Red');
              dlmwrite('IXT.txt', ImageX, '-append', 'delimiter', '\t', 'precision', 6);
              dlmwrite('IYT.txt', ImageY, '-append', 'delimiter', '\t', 'precision', 6);
              InitialX = X;       %記住當(dāng)前點(diǎn)坐標(biāo)
              InitialY = Y;       %記住當(dāng)前點(diǎn)坐標(biāo)
              % 列印「MouseDraw is moving!」及滑鼠現(xiàn)在位置
              % fprintf('MouseDraw is moving! Current location = (%g, %g)\n', ...
                % CurPiont(1,1), CurPiont(1,2));
      % %         fprintf('MouseDraw move!\n');
              % 設(shè)定滑鼠按鈕被釋放時(shí)的反應(yīng)指令為「MouseDraw up」
              % set(gcf, 'WindowButtonUpFcn', 'MouseDraw up');
          %%滑鼠按鈕被釋放時(shí)的反應(yīng)指令
          case 'up',
              % 清除滑鼠移動(dòng)時(shí)的反應(yīng)指令
              set(gcf, 'WindowButtonMotionFcn', '');
              % 清除滑鼠按鈕被釋放時(shí)的反應(yīng)指令
              set(gcf, 'WindowButtonUpFcn', '');
              % 列印「MouseDraw up!」
      % %         fprintf('MouseDraw up!\n');
      end

      end

      同樣MouseDraw.m也在Matlab 2010a上運(yùn)行過(guò)。

      有不足之處,請(qǐng)不吝賜教!

        matlab
        (18)matlab
        西西軟件園提供.正式版以及其他好用的版本,小編推薦大家的是是免安裝的用過(guò)安裝版的都知道,裝一次非常耗時(shí)還要注冊(cè)碼而這兩個(gè)版本都是能夠放在盤里的,即插即用,現(xiàn)在的盤一般都在左右,能容得下了。是一款著名的商業(yè)數(shù)學(xué)軟件,是用于分析數(shù)據(jù)并且開(kāi)發(fā)算法和應(yīng)用一種高級(jí)技術(shù)語(yǔ)言和發(fā)展環(huán)境,在編程和編碼效率的區(qū)域內(nèi)包括主要的新特徵,繪制和新特征包括的形象化,數(shù)學(xué),性能,和文件....更多>>
        • Matlab7.0R2007b 綠色U盤便攜破解版

          05-15 / 1.21G

          推薦理由:Matlab7.0全功能版的,雖然大了一點(diǎn),但是用起來(lái)不出問(wèn)題。!portablematlab是免安裝的;用過(guò)安裝版的都知
        • MatLab R2012b 特別文件

          03-01 / 4.4M

          推薦理由:MatLab 2012b的破解文件,內(nèi)附帶詳細(xì)的安裝圖文教程。 MATLAB和Mathematica、Maple、MathCAD并稱為四大數(shù)學(xué)
        • Matlab界面漢化包

          04-10 / 1.5M

          推薦理由:MATLAB是矩陣實(shí)驗(yàn)室(Matrix Laboratory)的簡(jiǎn)稱,美國(guó)MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,用于算法開(kāi)發(fā)、數(shù)
        • 多重網(wǎng)格算法matlab程序

          03-05 / 16KB

          推薦理由:多重網(wǎng)格求解橢圓型線性PDEs的標(biāo)量PDE規(guī)格需要使用的格式由PDE工具箱。這個(gè)幾何描述“g”和邊界條件描述“b
        • matlab圖像分割

          02-26 / 219KB

          推薦理由:程序代碼說(shuō)明P0801:索書(shū)號(hào)文字圖像分割P0802:粘連字符切分P0803:文字識(shí)別P0804:彩色車牌分割P0805:商標(biāo)
        • matlab模擬軟件1.0 免費(fèi)版

          12-09 / 95KB

          推薦理由:用于算法開(kāi)發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計(jì)算的高級(jí)技術(shù)計(jì)算語(yǔ)言和交互式環(huán)境,

        相關(guān)評(píng)論

        閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過(guò)難過(guò)
        • 5 囧
        • 3 圍觀圍觀
        • 2 無(wú)聊無(wú)聊

        熱門評(píng)論

        第 1 樓 福建福州(連江縣)聯(lián)通ADSL 網(wǎng)友 客人 發(fā)表于: 2011/3/20 11:21:26
        為什么我的不能運(yùn)行呢?出錯(cuò)

        支持( 0 ) 蓋樓(回復(fù))

        最新評(píng)論

        第 2 樓 江蘇南京南京大學(xué) 網(wǎng)友 客人 發(fā)表于: 2011/5/7 20:44:46
        跪求使用方法

        支持( 0 ) 蓋樓(回復(fù))

        第 1 樓 福建福州(連江縣)聯(lián)通ADSL 網(wǎng)友 客人 發(fā)表于: 2011/3/20 11:21:26
        為什么我的不能運(yùn)行呢?出錯(cuò)

        支持( 0 ) 蓋樓(回復(fù))

        發(fā)表評(píng)論 查看所有評(píng)論(0)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)