php中自定义分页处理类

<?php


/**
 * @(#)pages.php
 * PHP version 5.2.3
 *
 *
 * Copyright 2007 SoftRoad. All Rights Reserved.
 *
 *====================================================================
 * 変更履歴
 * 
 * 新規作成                            2007 年5月17日   蒋彪
 */
//require ("../common/dbutil.php");
//require ("../common/config.php");
class PageBean {
 
 /*
  * 総ページ数
  */
 var $totalPageNumber = 0;
 /*
  * 当面のページ
  */
 var $currentPageNumber = 1;
 /*
  * 最大レコードの件数
  */
 var $pageSize;
 /*
  * 検索結果
  */
 var $result;
 /*
  * 検索sql
  */
 var $sql;
 /*
  * データベースの処理対象
  */
 var $dbutil;
 /*
  * 総コードの件数
  */
 var $totalItem = 0;
 /*
  * 構造関数
  */
 function __construct($sql, $currentPageNumber, $pageSize) {
  $this->dbutil = new DBUtil();
  $this->sql = $sql;
  $this->currentPageNumber = $currentPageNumber;
  $this->pageSize = $pageSize;
 }
 /*
  * 総ページ数を設定する
  */
 function setTotalPageNumber() {
  $this->totalPageNumber = ceil($this->getTotalItem() / $this->pageSize);
 }
 /*
  * 総コードの件数を設定する
  */
 function setTotalItem() {
  $this->dbutil->connectDb(dbtype, connectType, dbconnect, dbusr, dbpwd);
  $result = $this->dbutil->executeQuery($this->sql);
  $rowNum = $this->dbutil->rowsNumber($result);
  $this->totalItem = $rowNum;
  $this->dbutil->closeDb();
 }
 /*
  * 総コードの件数を取得する
  */
 function getTotalItem() {
  return $this->totalItem;
 }
 /*
  * 総ページ数を取得する
  */
 function getTotalPageNumber() {
  return $this->totalPageNumber;
 }
 /*
  * 当面のページを設定する
  */
 function setCurrentPageNumber($currentPageNumber) {
  $this->currentPageNumber = $currentPageNumber;
 }
 /*
  * 当面のページをを取得する
  */
 function getCurrentPageNumber() {
  return $this->currentPageNumber;
 }
 /*
  * ページ内表示リスト件数を設定する
  */
 function setPageSize($pageSize) {
  $this->pageSize = $pageSize;
 }
 /*
  * ページ内表示リスト件数
  */
 function getPageSize() {
  return $this->pageSize;
 }
 /*
  * 最後のページチェック
  */
 function isHasNextPage() {
  $temp = $this->getCurrentPageNumber() + 1;
  if ($temp > $this->getTotalPageNumber()) {
   return false;
  } else {
   return true;
  }
 }
 /*
  * 最前のページチェック
  */
 function isHasPreviousPage() {
  $temp = $this->getCurrentPageNumber() - 1;
  if ($temp < 1) {
   return false;
  } else {
   return true;
  }
 }
 /*
  * ページ内表示のデータを取得する
  */
 function getPageList() {
  $this->setTotalItem();
  $this->setTotalPageNumber();
  $sql = $this->sql . " limit " . $this->getPageSize() . " offset " . ($this->currentPageNumber - 1) * $this->getPageSize();
  $this->dbutil->connectDb(dbtype, connectType, dbconnect, dbusr, dbpwd);
  $this->result = $this->dbutil->select($sql);
  $this->dbutil->closeDb();

  return $this->result;
 }
 /*
  * 改頁を取得
  */
 function getToolBar() {

  $from=($this->getCurrentPageNumber() - 1) * $this->getPageSize() + 1;
  $to=$this->getCurrentPageNumber() * $this->getPageSize();
  if((int)$to > (int)$this->getTotalItem()){
   $to=$this->getTotalItem();
  }
  if (!$this->isHasNextPage() && !$this->isHasPreviousPage()) {//only one page
   $firstNav='最初 ';
   $strPreviousNav = '前へ ';
   $strPageNum = $this->getCurrentPageNumber();
   $strNextNav = ' 次へ';
   $strInfo = '最後 (' . $this->getTotalItem() . "件ヒット 1 - ". $this->getPageSize()." 件表示)";
  } else if ($this->isHasNextPage() && $this->isHasPreviousPage()) {
   $firstNav="<a href=/"javascript:goTo(1);/">最初</a>";
   $strPreviousNav = " <a href=/"javascript:goTo(" . ($this->getCurrentPageNumber() - 1) . ");/">前へ</a> ";
   $strPageNum = $this->getCurrentPageNumber();
   $strNextNav = " <a href=/"javascript:goTo(" . ($this->getCurrentPageNumber() + 1) . ");/">次へ</a>";
   $strInfo = " <a href=/"javascript:goTo(" . $this->getTotalPageNumber(). ");/">最後</a>".'(' . $this->getTotalItem() . "件ヒット " .$from . " - " . $to . "件表示)";
  } else if ($this->isHasNextPage() && !$this->isHasPreviousPage()) {//no Previous Page
   $firstNav='最初 ';
   $strPreviousNav = "前へ ";
   $strPageNum = $this->getCurrentPageNumber();
   $strNextNav = " <a href=/"javascript:goTo(" . ($this->getCurrentPageNumber() + 1) . ");/"> 次へ</a>";
   $strInfo = " <a href=/"javascript:goTo(" . $this->getTotalPageNumber() . ");/">最後</a>".'(' . $this->getTotalItem() . "件ヒット " .$from . " - " . $to . "件表示)";
  } else if (!$this->isHasNextPage() && $this->isHasPreviousPage()) {//no Next Page
   $firstNav="<a href=/"javascript:goTo(1);/">最初</a>";
   $strPreviousNav = " <a href=/"javascript:goTo(" . ($this->getCurrentPageNumber() - 1) . ");/">前へ </a> ";
   $strPageNum = $this->getCurrentPageNumber();
   $strNextNav = " 次へ ";
   $strInfo = "最後".'(' . $this->getTotalItem() . "件ヒット " .$from . " - " . $to . "件表示)";
  }
  return $firstNav.$strPreviousNav . $strPageNum . $strNextNav . $strInfo;
 }
}
?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在信号处理领域,DOA(Direction of Arrival)估计是一项关键技术,主要用于确定多个信号源到达接收阵列的方向。本文将详细探讨三种ESPRIT(Estimation of Signal Parameters via Rotational Invariance Techniques)算法在DOA估计的实现,以及它们在MATLAB环境的具体应用。 ESPRIT算法是由Paul Kailath等人于1986年提出的,其核心思想是利用阵列数据的旋转不变性来估计信号源的角度。这种算法相比传统的 MUSIC(Multiple Signal Classification)算法具有较低的计算复杂度,且无需进行特征值分解,因此在实际应用颇具优势。 1. 普通ESPRIT算法 普通ESPRIT算法分为两个主要步骤:构造等效旋转不变系统和估计角度。通过空间平移(如延时)构建两个子阵列,使得它们之间的关系具有旋转不变性。然后,通过对子阵列数据进行最小二乘拟合,可以得到信号源的角频率估计,进一步转换为DOA估计。 2. 常规ESPRIT算法实现 在描述提到的`common_esprit_method1.m`和`common_esprit_method2.m`是两种不同的普通ESPRIT算法实现。它们可能在实现细节上略有差异,比如选择子阵列的方式、参数估计的策略等。MATLAB代码通常会包含预处理步骤(如数据归一化)、子阵列构造、旋转不变性矩阵的建立、最小二乘估计等部分。通过运行这两个文件,可以比较它们在估计精度和计算效率上的异同。 3. TLS_ESPRIT算法 TLS(Total Least Squares)ESPRIT是对普通ESPRIT的优化,它考虑了数据噪声的影响,提高了估计的稳健性。在TLS_ESPRIT算法,不假设数据噪声是高斯白噪声,而是采用总最小二乘准则来拟合数据。这使得算法在噪声环境下表现更优。`TLS_esprit.m`文件应该包含了TLS_ESPRIT算法的完整实现,包括TLS估计的步骤和旋转不变性矩阵的改进处理。 在实际应用,选择合适的ESPRIT变体取决于系统条件,例如噪声水平、信号质量以及计算资源。通过MATLAB实现,研究者和工程师可以方便地比较不同算法的效果,并根据需要进行调整和优化。同时,这些代码也为教学和学习DOA估计提供了一个直观的平台,有助于深入理解ESPRIT算法的工作原理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值