`

Java 泛型学习(Java 泛型的理解与等价实现)02

阅读更多

三、泛型的综合运用实例(代码参考java参考大全,有改动)

  1. public class AvgGen<T extends Number> {   
  2.   public AvgGen() {   
  3.   }   
  4.   
  5.   public double getAvg(T[] arr) {   
  6.     double sum = 0.0;   
  7.     for (int i = 0; i < arr.length; i++) {   
  8.       sum = sum + arr[i].doubleValue();   
  9.     }   
  10.     return sum / arr.length;   
  11.   }   
  12.   
  13.   public static void main(String[] args) {   
  14.     // 整形数组求均值   
  15.     System.out.println("整形数组{1, 3}求均值:");   
  16.     Integer[] intArr = { 13 };   
  17.     AvgGen<Integer> intObj = new AvgGen<Integer>();   
  18.     double intavg = intObj.getAvg(intArr);   
  19.     System.out.println(intavg);   
  20.     System.out.println();   
  21.     // 浮点型数组求均值   
  22.     System.out.println("浮点型数组{1.1f,2.9f}求均值:");   
  23.     Float[] fArr = { 1.1f, 2.9f };   
  24.     AvgGen<Float> fObj = new AvgGen<Float>();   
  25.     double favg = fObj.getAvg(fArr);   
  26.     System.out.println(favg);   
  27.   }   
  28. }   
  29.   
  30. /**  
  31.  * Created by IntelliJ IDEA. User: leizhimin Date: 2007-9-18 Time: 11:08:14 使用通配符泛型参数:泛型参数是可变的,可在运行时来确定。  
  32.  */  
  33. public class AvgCompGen<T extends Number> {   
  34.   private T[] arr;   
  35.   
  36.   /**  
  37.    * 构造函数  
  38.    *   
  39.    * @param arr  
  40.    */  
  41.   public AvgCompGen(T[] arr) {   
  42.     this.arr = arr;   
  43.   }   
  44.   
  45.   /**  
  46.    * 求数组均值  
  47.    *   
  48.    * @return 数组均值  
  49.    */  
  50.   public double getAvg() {   
  51.     double sum = 0.0;   
  52.     for (int i = 0; i < arr.length; i++) {   
  53.       sum += arr[i].doubleValue();   
  54.     }   
  55.     return sum / arr.length;   
  56.   }   
  57.   
  58.   /**  
  59.    * 比较数组均值是否相等(使用通配符泛型参数) AvgCompGen<?>表示可以匹配任意的AvgCompGen对象,有点类似Object  
  60.    *   
  61.    * @param x 目标对象  
  62.    * @return 均值是否相等  
  63.    */  
  64.   public boolean sameAvg(AvgCompGen<?> x) {   
  65.     if (getAvg() == x.getAvg())   
  66.       return true;   
  67.     return false;   
  68.   }   
  69.   
  70.   /**  
  71.    * 主函数:用来测试  
  72.    *   
  73.    * @param args  
  74.    */  
  75.   public static void main(String[] args) {   
  76.     // 创建参数为Integer类型泛型对象   
  77.     Integer[] intArr = { 13 };   
  78.     AvgCompGen<Integer> intObj = new AvgCompGen<Integer>(intArr);   
  79.     System.out.println("intObj的平均值=" + intObj.getAvg());   
  80.     // 创建参数为Double类型泛型对象   
  81.     Double[] douArr = { 1.03.0 };   
  82.     AvgCompGen<Double> douObj = new AvgCompGen<Double>(douArr);   
  83.     System.out.println("douObj的平均值=" + douObj.getAvg());   
  84.     // 创建参数为Float类型泛型对象   
  85.     Float[] fltArr = { 0.8f, 3.2f };   
  86.     AvgCompGen<Float> fltObj = new AvgCompGen<Float>(fltArr);   
  87.     System.out.println("fltObj的平均值=" + fltObj.getAvg());   
  88.     // 两两比较对象的均值是否相等   
  89.     if (intObj.sameAvg(douObj))   
  90.       System.out.println("intArr与douArr的值相等,结果为:" + " intObj的均值=" + intObj.getAvg()   
  91.           + "   douObj的均值=" + douObj.getAvg());   
  92.     else  
  93.       System.out.println("intArr与douArr的值不相等,结果为:" + " intObj的均值=" + intObj.getAvg()   
  94.           + "   douObj的均值=" + douObj.getAvg());   
  95.     if (intObj.sameAvg(fltObj))   
  96.       System.out.println("intArr与fltObj的值相等,结果为:" + " intObj的均值=" + intObj.getAvg()   
  97.           + "   fltObj的均值=" + fltObj.getAvg());   
  98.     else  
  99.       System.out.println("intArr与fltObj的值不相等,结果为:" + " intObj的均值=" + intObj.getAvg()   
  100.           + "   fltObj的均值=" + fltObj.getAvg());   
  101.     if (douObj.sameAvg(fltObj))   
  102.       System.out.println("douObj与fltObj的值相等,结果为:" + " douObj的均值=" + intObj.getAvg()   
  103.           + "   fltObj的均值=" + fltObj.getAvg());   
  104.     else  
  105.       System.out.println("douObj与fltObj的值不相等,结果为:" + " douObj的均值=" + intObj.getAvg()   
  106.           + "   fltObj的均值=" + fltObj.getAvg());   
  107.   }   
  108. }   
  109.   
  110. /**  
  111.  * Created by IntelliJ IDEA. User: leizhimin Date: 2007-9-18 Time: 16:09:37 三种坐标,用泛型实现坐标打印  
  112.  */  
  113. public class TwoD {   
  114.   int x, y;   
  115.   
  116.   public TwoD(int x, int y) {   
  117.     this.x = x;   
  118.     this.y = y;   
  119.   }   
  120. }   
  121.   
  122. class ThreeD extends TwoD {   
  123.   int z;   
  124.   
  125.   public ThreeD(int x, int y, int z) {   
  126.     super(x, y);   
  127.     this.z = z;   
  128.   }   
  129. }   
  130.   
  131. class FourD extends ThreeD {   
  132.   int t;   
  133.   
  134.   public FourD(int x, int y, int z, int t) {   
  135.     super(x, y, z);   
  136.     this.t = t;   
  137.   }   
  138. }   
  139.   
  140. /**  
  141.  * 存放泛型坐标的(数据结构)类  
  142.  */  
  143. class Coords<T extends TwoD> {   
  144.   T[] coords;   
  145.   
  146.   public Coords(T[] coords) {   
  147.     this.coords = coords;   
  148.   }   
  149. }   
  150.   
  151. /**  
  152.  * 工具类--打印泛型数据 并给出一个测试方法  
  153.  */  
  154. class BoundeWildcard {   
  155.   static void showXY(Coords<?> c) {   
  156.     System.out.println("X Y Coordinates:");   
  157.     for (int i = 0; i < c.coords.length; i++) {   
  158.       System.out.println(c.coords[i].x + "  " + c.coords[i].y);   
  159.     }   
  160.     System.out.println();   
  161.   }   
  162.   
  163.   static void showXYZ(Coords<? extends ThreeD> c) {   
  164.     System.out.println("X Y Z Coordinates:");   
  165.     for (int i = 0; i < c.coords.length; i++) {   
  166.       System.out.println(c.coords[i].x + "  " + c.coords[i].y + "  " + c.coords[i].z);   
  167.     }   
  168.     System.out.println();   
  169.   }   
  170.   
  171.   static void showAll(Coords<? extends FourD> c) {   
  172.     System.out.println("X Y Z Coordinates:");   
  173.     for (int i = 0; i < c.coords.length; i++) {   
  174.       System.out.println(c.coords[i].x + "  " + c.coords[i].y + "  " + c.coords[i].z + "  "  
  175.           + c.coords[i].t);   
  176.     }   
  177.     System.out.println();   
  178.   }   
  179.   
  180.   public static void main(String args[]) {   
  181.     TwoD td[] = { new TwoD(00), new TwoD(79), new TwoD(184), new TwoD(-1, -23) };   
  182.     Coords<TwoD> tdlocs = new Coords<TwoD>(td);   
  183.     System.out.println("Contents of tdlocs.");   
  184.     showXY(tdlocs);   
  185.     FourD fd[] = { new FourD(1234), new FourD(68148), new FourD(22949),   
  186.         new FourD(3, -2, -2317) };   
  187.     Coords<FourD> fdlocs = new Coords<FourD>(fd);   
  188.     System.out.println("Contents of fdlocs.");   
  189.     showXY(fdlocs);   
  190.     showXYZ(fdlocs);   
  191.     showAll(fdlocs);   
  192.   }   
  193. }  
public class AvgGen<T extends Number> {
  public AvgGen() {
  }

  public double getAvg(T[] arr) {
    double sum = 0.0;
    for (int i = 0; i < arr.length; i++) {
      sum = sum + arr[i].doubleValue();
    }
    return sum / arr.length;
  }

  public static void main(String[] args) {
    // 整形数组求均值
    System.out.println("整形数组{1, 3}求均值:");
    Integer[] intArr = { 1, 3 };
    AvgGen<Integer> intObj = new AvgGen<Integer>();
    double intavg = intObj.getAvg(intArr);
    System.out.println(intavg);
    System.out.println();
    // 浮点型数组求均值
    System.out.println("浮点型数组{1.1f,2.9f}求均值:");
    Float[] fArr = { 1.1f, 2.9f };
    AvgGen<Float> fObj = new AvgGen<Float>();
    double favg = fObj.getAvg(fArr);
    System.out.println(favg);
  }
}

/**
 * Created by IntelliJ IDEA. User: leizhimin Date: 2007-9-18 Time: 11:08:14 使用通配符泛型参数:泛型参数是可变的,可在运行时来确定。
 */
public class AvgCompGen<T extends Number> {
  private T[] arr;

  /**
   * 构造函数
   * 
   * @param arr
   */
  public AvgCompGen(T[] arr) {
    this.arr = arr;
  }

  /**
   * 求数组均值
   * 
   * @return 数组均值
   */
  public double getAvg() {
    double sum = 0.0;
    for (int i = 0; i < arr.length; i++) {
      sum += arr[i].doubleValue();
    }
    return sum / arr.length;
  }

  /**
   * 比较数组均值是否相等(使用通配符泛型参数) AvgCompGen<?>表示可以匹配任意的AvgCompGen对象,有点类似Object
   * 
   * @param x 目标对象
   * @return 均值是否相等
   */
  public boolean sameAvg(AvgCompGen<?> x) {
    if (getAvg() == x.getAvg())
      return true;
    return false;
  }

  /**
   * 主函数:用来测试
   * 
   * @param args
   */
  public static void main(String[] args) {
    // 创建参数为Integer类型泛型对象
    Integer[] intArr = { 1, 3 };
    AvgCompGen<Integer> intObj = new AvgCompGen<Integer>(intArr);
    System.out.println("intObj的平均值=" + intObj.getAvg());
    // 创建参数为Double类型泛型对象
    Double[] douArr = { 1.0, 3.0 };
    AvgCompGen<Double> douObj = new AvgCompGen<Double>(douArr);
    System.out.println("douObj的平均值=" + douObj.getAvg());
    // 创建参数为Float类型泛型对象
    Float[] fltArr = { 0.8f, 3.2f };
    AvgCompGen<Float> fltObj = new AvgCompGen<Float>(fltArr);
    System.out.println("fltObj的平均值=" + fltObj.getAvg());
    // 两两比较对象的均值是否相等
    if (intObj.sameAvg(douObj))
      System.out.println("intArr与douArr的值相等,结果为:" + " intObj的均值=" + intObj.getAvg()
          + "   douObj的均值=" + douObj.getAvg());
    else
      System.out.println("intArr与douArr的值不相等,结果为:" + " intObj的均值=" + intObj.getAvg()
          + "   douObj的均值=" + douObj.getAvg());
    if (intObj.sameAvg(fltObj))
      System.out.println("intArr与fltObj的值相等,结果为:" + " intObj的均值=" + intObj.getAvg()
          + "   fltObj的均值=" + fltObj.getAvg());
    else
      System.out.println("intArr与fltObj的值不相等,结果为:" + " intObj的均值=" + intObj.getAvg()
          + "   fltObj的均值=" + fltObj.getAvg());
    if (douObj.sameAvg(fltObj))
      System.out.println("douObj与fltObj的值相等,结果为:" + " douObj的均值=" + intObj.getAvg()
          + "   fltObj的均值=" + fltObj.getAvg());
    else
      System.out.println("douObj与fltObj的值不相等,结果为:" + " douObj的均值=" + intObj.getAvg()
          + "   fltObj的均值=" + fltObj.getAvg());
  }
}

/**
 * Created by IntelliJ IDEA. User: leizhimin Date: 2007-9-18 Time: 16:09:37 三种坐标,用泛型实现坐标打印
 */
public class TwoD {
  int x, y;

  public TwoD(int x, int y) {
    this.x = x;
    this.y = y;
  }
}

class ThreeD extends TwoD {
  int z;

  public ThreeD(int x, int y, int z) {
    super(x, y);
    this.z = z;
  }
}

class FourD extends ThreeD {
  int t;

  public FourD(int x, int y, int z, int t) {
    super(x, y, z);
    this.t = t;
  }
}

/**
 * 存放泛型坐标的(数据结构)类
 */
class Coords<T extends TwoD> {
  T[] coords;

  public Coords(T[] coords) {
    this.coords = coords;
  }
}

/**
 * 工具类--打印泛型数据 并给出一个测试方法
 */
class BoundeWildcard {
  static void showXY(Coords<?> c) {
    System.out.println("X Y Coordinates:");
    for (int i = 0; i < c.coords.length; i++) {
      System.out.println(c.coords[i].x + "  " + c.coords[i].y);
    }
    System.out.println();
  }

  static void showXYZ(Coords<? extends ThreeD> c) {
    System.out.println("X Y Z Coordinates:");
    for (int i = 0; i < c.coords.length; i++) {
      System.out.println(c.coords[i].x + "  " + c.coords[i].y + "  " + c.coords[i].z);
    }
    System.out.println();
  }

  static void showAll(Coords<? extends FourD> c) {
    System.out.println("X Y Z Coordinates:");
    for (int i = 0; i < c.coords.length; i++) {
      System.out.println(c.coords[i].x + "  " + c.coords[i].y + "  " + c.coords[i].z + "  "
          + c.coords[i].t);
    }
    System.out.println();
  }

  public static void main(String args[]) {
    TwoD td[] = { new TwoD(0, 0), new TwoD(7, 9), new TwoD(18, 4), new TwoD(-1, -23) };
    Coords<TwoD> tdlocs = new Coords<TwoD>(td);
    System.out.println("Contents of tdlocs.");
    showXY(tdlocs);
    FourD fd[] = { new FourD(1, 2, 3, 4), new FourD(6, 8, 14, 8), new FourD(22, 9, 4, 9),
        new FourD(3, -2, -23, 17) };
    Coords<FourD> fdlocs = new Coords<FourD>(fd);
    System.out.println("Contents of fdlocs.");
    showXY(fdlocs);
    showXYZ(fdlocs);
    showAll(fdlocs);
  }
}
原文请见: http://www.java2000.net/p7927
                 http://www.java2000.net/p7926



注意:多个泛型类、接口,接口、类继承,这种设计方式往往会导致泛型很复杂,程序的可读性急剧下降,程序中应该兼顾代码的可读性。

总结:
泛型其实就是一个类型的参数化,没有它程序照样写!把这句话记心里。有两层含义:一是泛型的实质,二是要知其然还要知其所以然。泛型不可怕,泛型的设计也从开发者角度出发的,使用得当会大大提高代码的安全性和简洁性。

分享到:
评论

相关推荐

    COMSOL激光增材制造技术:热流力三场耦合模型的构建与模拟研究,COMSOL激光增材制造中热-流-力三场耦合模型的研究与应用:基于固体传热、固体力学、层流和动网格技术的多物理场分析,comsol激光

    COMSOL激光增材制造技术:热流力三场耦合模型的构建与模拟研究,COMSOL激光增材制造中热-流-力三场耦合模型的研究与应用:基于固体传热、固体力学、层流和动网格技术的多物理场分析,comsol激光增材制造热-流-力三场偶合模型 选用固体传热,固体力学,层流和动网格,考虑热物性以及马兰戈尼效应、表面张力,相变潜热,热对流和热辐射等 【软件工具】COMSOL5.6 【备注】,comsol三维模型 ,核心关键词:comsol; 激光增材制造; 热-流-力三场偶合模型; 固体传热; 固体力学; 层流; 动网格; 热物性; 马兰戈尼效应; 表面张力; 相变潜热; 热对流; 热辐射; COMSOL5.6; 三维模型。,COMSOL 5.6激光增材制造三场耦合模型

    基于PLL的SMO滑模观测器算法在永磁同步电机无传感器矢量控制中的应用及其与反正切SMO的对比:有效消除转速抖动,基于PLL的SMO滑模观测器算法在永磁同步电机无传感器矢量控制中的应用及其与反正切SM

    基于PLL的SMO滑模观测器算法在永磁同步电机无传感器矢量控制中的应用及其与反正切SMO的对比:有效消除转速抖动,基于PLL的SMO滑模观测器算法在永磁同步电机无传感器矢量控制中的应用及其与反正切SMO的对比:有效消除转速抖动,基于PLL的SMO滑模观测器算法,永磁同步电机无传感器矢量控制,跟基于反正切的SMO做对比,可以有效消除转速的抖动。 ,基于PLL的SMO滑模观测器算法; 永磁同步电机无传感器矢量控制; 反正切SMO; 转速抖动消除。,基于PLL SMO滑模观测器:永磁同步电机无传感器矢量控制新算法,优化抖动消除效能

    【毕业设计】java-springboot+vue个人云盘管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip

    【毕业设计】java-springboot+vue个人云盘管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip

    【语音识别】基于matlab自适应滤波器LMS算法鸟类物种识别【含Matlab源码 9977期】.mp4

    海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    【毕业设计】java-springboot-vue电影推荐系统实现源码(完整前后端-mysql-说明文档-LunW).zip

    【毕业设计】java-springboot-vue电影推荐系统实现源码(完整前后端-mysql-说明文档-LunW).zip

    基于OpenCV和Python的实时口罩识别系统:支持摄像头与图片检测,界面简洁操作便捷,基于OpenCV的口罩识别系统 相关技.

    基于OpenCV和Python的实时口罩识别系统:支持摄像头与图片检测,界面简洁操作便捷,基于OpenCV的口罩识别系统 相关技术:python,opencv,pyqt (请自行安装向日葵远程软件,以便提供远程帮助) 软件说明:读取用户设备的摄像头,可实时检测画面中的人的口罩佩戴情况,并给予提示。 有基础的同学,可稍作修改,检测图片。 第一张为运行主界面。 第二张为部分代码截图。 第三和第四张为运行界面。 ,基于OpenCV的口罩识别系统; Python; OpenCV; PyQt; 远程协助; 摄像头读取; 实时检测; 口罩佩戴情况提示; 代码截图; 运行界面。,"基于OpenCV与Python的口罩识别系统:实时检测与提醒"

    Git与GitHub入门指南:版本控制、协作开发及基础命令教程

    内容概要:本文是一份关于 Git 和 GitHub 的入门指南,详细介绍了一整套从安装到进阶使用的完整流程。文章首先阐述了版本控制的重要性,并解释了 Git 的特点和优势。接着逐步介绍了 Git 和 GitHub 的使用方法,包括安装设置 Git、创建和管理 GitHub 账户、创建和克隆仓库,以及日常操作如提交、推送、拉取、分支管理和处理冲突的具体指令和操作步骤。还涉及到高级主题如合并请求、持续集成等功能的介绍,帮助读者深入了解 Git 和 GitHub 的应用范围和最佳实践。 适用人群:适用于刚开始接触版本控制系统的初学者,特别是那些正在寻找 Git 和 GitHub 实际操作指导的学生和技术爱好者。 使用场景及目标:①为刚踏入软件开发领域的新人提供详尽的基础教学,使其能够快速理解和掌握必要的技能;②指导已有一定经验但仍想进一步深化理解的开发人员如何优化日常工作流程;③促进团队合作效率提升,通过具体的实例演示如何利用版本控制系统协调多人协作。 其他说明:随着 Git 和 GitHub 成为现代软件开发的标准工具之一,这份资料不仅涵盖了关键知识点,而且配有多图例解析和实操练习,确保每个阶段的学习都能得到良好反馈和支持。读者可以通过动手实践来巩固所学知识,在实践中遇到困难也能及时参考本文获得解决方案。

    python安装-16. 使用指定序列和数值创建一个字典-分配伴侣.py

    python安装-16. 使用指定序列和数值创建一个字典——分配伴侣.py

    Python+OpenCV魔方识别系

    本研究的目的是基于Python和OpenCV开发一个魔方识别系统,并提供相应的源码和部署教程。通过该系统,用户可以将魔方的图像输入,系统可以自动识别魔方的状态,并给出相应的还原方案。具体来说,本研究的主要内容包括以下几个方面: 图像预处理:通过使用OpenCV提供的图像处理算法,对输入的魔方图像进行预处理,包括图像去噪、边缘检测、图像分割等操作,以提高后续的识别准确率。 特征提取与模式识别:通过使用OpenCV提供的特征提取算法,对预处理后的图像进行特征提取,以获取魔方的状态信息。然后,通过机器学习算法,对提取到的特征进行模式识别,以确定魔方的状态。 还原方案生成:根据识别到的魔方状态,使用经典的还原算法,生成相应的还原方案。通过该方案,用户可以轻松地还原魔方,提高解决效率。

    基于Springboot与Vue.js的WMS仓库管理系统源码详解:前后端分离架构下的Java实践与功能详述,基于Springboot和Vue的前后端分离WMS仓库管理系统源码,详细功能参考详情 ,S

    基于Springboot与Vue.js的WMS仓库管理系统源码详解:前后端分离架构下的Java实践与功能详述,基于Springboot和Vue的前后端分离WMS仓库管理系统源码,详细功能参考详情。,Springboot vue仓库管理系统源码Java 前后端分离 WMS仓库管理 BS 功能见详情 ,Springboot; Vue; 仓库管理系统; 源码; Java; 前后端分离; WMS仓库管理; BS; 功能详情,Springboot+Vue仓库管理系统源码:前后端分离的WMS管理BS应用

    用AI学安卓游戏开发1-控制小球上下左右移动2代码

    用AI学安卓游戏开发1——控制小球上下左右移动2代码, 初始化小球随机自有移动,遇到屏幕边缘反弹,摇杆介入后小球停止自有移动,按照摇杆控制方向移动。

    【图像融合】基于matlab拉普拉斯方法水下图像增强融合【含Matlab源码 9983期】复现.mp4

    海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    【图像加密】基于matlab差分扩展缩略图保持加密【含Matlab源码 9692期】.mp4

    海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    【图像重建】CT图像重建【含Matlab源码 8035期】.md

    CSDN Matlab武动乾坤上传的资料均是完整代码运行出的仿真结果图,可见完整代码亲测可用,适合小白; 1、完整的代码内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    基于ATP-EMTP的110kV海底电缆与架空线雷击过电压仿真分析与研究,基于ATP-EMTP的110kV海底电缆与架空线雷击过电压仿真分析与研究,110kV海底电缆-架空线雷击过电压ATP-EMTP

    基于ATP-EMTP的110kV海底电缆与架空线雷击过电压仿真分析与研究,基于ATP-EMTP的110kV海底电缆与架空线雷击过电压仿真分析与研究,110kV海底电缆-架空线雷击过电压ATP-EMTP仿真分析 ,核心关键词: 110kV海底电缆; 架空线; 雷击过电压; ATP-EMTP仿真分析; 分析。 关键词用分号分隔,如上所示。,雷击过电压仿真分析:110kV海底电缆及架空线ATP-EMTP研究

    基于800kV高压直流输电的VSC-HVDC仿真模型研究:控制策略与性能分析,基于800kV-VSC-HVDC的直流输电仿真模型研究:深入探讨控制结构与电压稳定性,800kV-VSC-HVDC直流输电

    基于800kV高压直流输电的VSC-HVDC仿真模型研究:控制策略与性能分析,基于800kV-VSC-HVDC的直流输电仿真模型研究:深入探讨控制结构与电压稳定性,800kV-VSC-HVDC直流输电仿真模型(Matlab) 流器拓扑:VSC两电平流器 电压等级:直流800kV,交流500kV 控制结构:逆变侧定有功控制与电流内环PI+前馈解耦,整流侧定直流电压与电流内环+PI前馈解耦; 输电距离:100km; 双端电压电流均为对称的三相电压电流; 直流电压稳定在800kV; 双端网侧THD<2% 电子资料, ,800kV; VSC HVDC; 直流输电仿真模型; Matlab; VSC两电平换流器; 直流电压稳定; 逆变侧定有功控制; 电流内环PI+前馈解耦; 整流侧定直流电压与电流内环; 输电距离; 双端电压电流对称; 双端网侧THD<2%。,Matlab仿真模型:800kV VSC两电平换流器HVDC输电系统

    【电池】基于matlab太阳能电池漂移扩散【含Matlab源码 11051期】.mp4

    海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    【毕业设计】java-springboot-vue电商应用系统实现源码(完整前后端-mysql-说明文档-LunW).zip

    【毕业设计】java-springboot-vue电商应用系统实现源码(完整前后端-mysql-说明文档-LunW).zip

    【运动学】基于matlab追踪法导弹打飞机仿真【含Matlab源码 11016期】.mp4

    海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    uniapp使用蓝牙通信示例

    uniapp使用蓝牙通信示例

Global site tag (gtag.js) - Google Analytics