欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JS實(shí)現(xiàn)簡(jiǎn)單的二維矩陣乘積運(yùn)算

 更新時(shí)間:2016年01月26日 10:22:50   作者:m1870164  
這篇文章主要介紹了JS實(shí)現(xiàn)簡(jiǎn)單的二維矩陣乘積運(yùn)算方法,涉及JavaScript基于數(shù)組操作實(shí)現(xiàn)矩陣運(yùn)算的功能,需要的朋友可以參考下

本文實(shí)例講述了JS實(shí)現(xiàn)簡(jiǎn)單的二維矩陣乘積運(yùn)算方法。分享給大家供大家參考,具體如下:

Console控制臺(tái)截圖如下:

(上圖為輸出結(jié)果直接上代碼了(A矩陣可以乘以B矩陣的前提是A矩陣的列數(shù)等于B矩陣的行數(shù))

<!DOCTYPE html>
<html>
  <head>
    <title>demo</title>
  </head>
  <body>
  </body>
  <script type="text/javascript">
    function log(msg) {
      console.log(msg);
    }
    /**
    * 可視化的打印出矩陣的數(shù)據(jù)
    */
    function printMatrixData(data) {
      console.log(data);
      if(!data) {
        return;
      }
      var numberSize = 5;
      for(var i=0, len=data.length; i<len; i++) {
        var row = data[i];
        var rowLog = "(";
        for(var j=0, jLen=row.length; j<jLen; j++) {
          rowLog += row[j];
          // 補(bǔ)齊空格
          rowLog += indent(numberSize - (row[j]+"").length);
        }
        rowLog+=")";
        console.log(rowLog);
      }
    }
    /**
    * 拼接指定長(zhǎng)度的空格
    */
    function indent(length) {
      var empty = "";
      for(var i=0; i<length; i++) {
        empty += " ";
      }
      return empty;
    }
    /**
    * 矩陣原型
    */
    function Matrix(data) {
      // 這里必須傳一個(gè)二維數(shù)組,最好嚴(yán)格檢驗(yàn)一下
      if(typeof data !== "object" || typeof data.length === "undefined" || !data) {
        throw new Error("data's type is error");
      }
      this.data = data;
      this.cols = data.length;
    }
    var M = {
      findByLocation: function(data, xIndex, yIndex) {
        if(data && data[xIndex]) {
          return data[xIndex][yIndex];
        }
      },
      // 矩陣乘積
      multiply: function(m, n) {
        if(!m instanceof Matrix && !n instanceof Matrix) {
          throw new Error("data's type is error");
        }
        var mData = m.data;
        var nData = n.data;
        if(mData.length == 0 || nData.length == 0) {
          return 0;
        }
        if(mData[0].length != nData.length) {
          throw new Error("the two martrix data is not allowed to dot");
        }
        var result = [];
        for(var i=0, len=mData.length; i<len; i++) {
          var mRow = mData[i];
          result[i] = [];
          for(var j=0, jLen=mRow.length; j<jLen; j++) {
            var resultRowCol = 0;
            // 如果n矩陣沒有足夠的列數(shù)相乘,轉(zhuǎn)入m矩陣下一行
            if(typeof this.findByLocation(nData, 0, j) === "undefined") {
              break;
            }
            for(var k=0, kLen=jLen; k<kLen; k++) {
              resultRowCol += mRow[k]*this.findByLocation(nData, k, j);
            }
            result[i][j] = resultRowCol;
          }
        }
        return result;
      }
    };
    var m = new Matrix([[2, -1], [-2, 1], [-1, 2]]);
    var n = new Matrix([[4, -3], [3, 5]]);
    var result = M.multiply(m, n);
    printMatrixData(result);
    var m2 = new Matrix([[2, 3, 1], [5, 2, 4], [-3, 2, 0]]);
    var n2 = new Matrix([[11], [5], [8]]);
    var result2 = M.multiply(m2, n2);
    printMatrixData(result2);
  </script>
</html>

更多關(guān)于JavaScript運(yùn)算相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • JavaScript setTimeout使用閉包功能實(shí)現(xiàn)定時(shí)打印數(shù)值

    JavaScript setTimeout使用閉包功能實(shí)現(xiàn)定時(shí)打印數(shù)值

    這篇文章主要介紹了JavaScript setTimeout使用閉包功能實(shí)現(xiàn)定時(shí)打印數(shù)值 的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • 微信小程序?qū)崿F(xiàn)輪播圖(適配機(jī)型)

    微信小程序?qū)崿F(xiàn)輪播圖(適配機(jī)型)

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)輪播圖,適配機(jī)型,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • javascript 獲取圖片顏色

    javascript 獲取圖片顏色

    html 5.0的canvas可以獲取到圖片的像素點(diǎn)了。這樣,我們可以做很多以圖片有關(guān)的操作和渲染了。當(dāng)然今后也會(huì)給瀏覽器渲染引擎更高的要求。(YY, 什么時(shí)候html渲染引擎也支持多核和GPU呢?)
    2009-04-04
  • 如何豐富alt屬性的顯示效果

    如何豐富alt屬性的顯示效果

    如何豐富alt屬性的顯示效果...
    2007-01-01
  • JS調(diào)用打印方法設(shè)置頁(yè)眉頁(yè)腳的實(shí)例

    JS調(diào)用打印方法設(shè)置頁(yè)眉頁(yè)腳的實(shí)例

    一個(gè)網(wǎng)頁(yè)打印相關(guān)功能的擴(kuò)展演示特效,在實(shí)現(xiàn)了打印功能外,還實(shí)現(xiàn)了打印預(yù)覽、打印前的頁(yè)眉頁(yè)腳設(shè)置,直接打印等功能,以前對(duì)JS打印前設(shè)置頁(yè)腳見的不多,所以這一個(gè)也算是挺有價(jià)值的,希望閑暇時(shí)參閱
    2013-05-05
  • php類中static與self的使用區(qū)別淺析

    php類中static與self的使用區(qū)別淺析

    在閱讀一些框架的源碼時(shí)發(fā)現(xiàn)了new static(),和new self(),甚是不解,后來(lái)查閱資料,才了解了,所以下面這篇文章主要給大家介紹了關(guān)于php類中static與self的使用區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • js實(shí)現(xiàn)接收表單的值并將值拼在表單action后面的方法

    js實(shí)現(xiàn)接收表單的值并將值拼在表單action后面的方法

    這篇文章主要介紹了js實(shí)現(xiàn)接收表單的值并將值拼在表單action后面的方法,涉及JavaScript動(dòng)態(tài)操作字符串及表單元素的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • bootstrapTable+ajax加載數(shù)據(jù) refresh更新數(shù)據(jù)

    bootstrapTable+ajax加載數(shù)據(jù) refresh更新數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了bootstrapTable+ajax加載數(shù)據(jù),以及refresh更新數(shù)據(jù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • ES6基礎(chǔ)之默認(rèn)參數(shù)值

    ES6基礎(chǔ)之默認(rèn)參數(shù)值

    這篇文章主要介紹了ES6基礎(chǔ)之默認(rèn)參數(shù)值,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • js獲取最近一周一個(gè)月三個(gè)月時(shí)間的簡(jiǎn)單示例

    js獲取最近一周一個(gè)月三個(gè)月時(shí)間的簡(jiǎn)單示例

    時(shí)間的獲取和格式化是我們經(jīng)常遇到的問題,下面這篇文章主要給大家介紹了關(guān)于利用js如何獲取最近一周一個(gè)月三個(gè)月時(shí)間的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-12-12

最新評(píng)論