1.相关方法已经生产引用,直接调用的结果如下:

2. 相关调用代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; using MathWorks.MATLAB.NET.Arrays;
using MathWorks.MATLAB.NET.Utility; using MatrixCalc; namespace 矩阵运算转换测试
{
class Program
{
static void Main(string[] args)
{
//生成一个double类型的矩阵,用内置的MATLAB父类MWArray方法
//第一个矩阵
Console.WriteLine("第一个矩阵");//2行2列
MWArray matrix1 = (MWNumericArray)new double[2, 2] { { 10.5, 25.6 }, { 55.4, 66.8 } };
Console.WriteLine(matrix1);
//第二个矩阵
Console.WriteLine("第二个矩阵");//2行2列
MWArray matrix2 = (MWNumericArray)new double[2, 2] { { 70.5, 28.6 }, { 35.3, 63.9 } };
Console.WriteLine(matrix2);
//第三个矩阵
Console.WriteLine("第三个矩阵");//3行3列
MWArray matrix3 = (MWNumericArray)new double[3, 3] { { 70.5, 28.6,77.88 }, { 35.3, 63.9,55.66 },{22.58,66.98,44.77 } };
Console.WriteLine(matrix3);
//第四个向量
Console.WriteLine("第三个向量");//3行3列
MWArray array = (MWNumericArray)new double[1, 3] { { 70.5, 28.6, 77.88 }};
Console.WriteLine(array);
Console.WriteLine("\n"); //进行矩阵的加法运算
Console.WriteLine("第一个矩阵和第二个矩阵的加法运算结果是:");
MatrixCalc.MatrixCalc Add = new MatrixCalc.MatrixCalc(); //实例化
var AddResult = Add.AddMatrixs(matrix1,matrix2);//调用加法方法
//var AddResult = Add.AddMatrixs(matrix1, matrix3);//调用加法方法//此处报错,因为两个矩阵的维度不一样
Console.WriteLine(AddResult);
Console.WriteLine("\n"); //进行矩阵的加法运算
Console.WriteLine("第一个矩阵和第二个矩阵的减法运算结果是:");
MatrixCalc.MatrixCalc Sub = new MatrixCalc.MatrixCalc(); //实例化
var SubResult = Sub.SubMatrixs(matrix1, matrix2);//调用加法方法(上面一样注意矩阵维度要一致)
Console.WriteLine(SubResult);
Console.WriteLine("\n"); //进行矩阵的乘法运算
MatrixCalc.MatrixCalc Mul = new MatrixCalc.MatrixCalc(); //实例化
var MulResult1 = Mul.MulMatrixs(matrix1, matrix2);//调用加法方法
//var MulResult2 = Mul.MulMatrixs(matrix1, matrix3);//调用加法方法
Console.WriteLine("第一个矩阵和第二个矩阵的乘法运算结果是:");
Console.WriteLine(MulResult1);
//Console.WriteLine("第一个矩阵和第三个矩阵的乘法运算结果是:");//错误维度不一样
//Console.WriteLine(MulResult2);
Console.WriteLine("第四个向量和第三个矩阵的乘法运算结果是:");
var MulResult3 = Mul.MulMatrixs(array, matrix3);//调用加法方法
Console.WriteLine(MulResult3);
Console.WriteLine("\n"); //进行矩阵的乘法运算(点乘运算)
Console.WriteLine("第一个矩阵和第二个矩阵的点乘法运算结果是:");
MatrixCalc.MatrixCalc DotMul = new MatrixCalc.MatrixCalc(); //实例化
var DotMulResult = DotMul.DotMulMatrixs(matrix1, matrix2);//调用加法方法(注意矩阵维度)
Console.WriteLine(DotMulResult);
Console.WriteLine("\n"); //进行矩阵的除法运算(正向除法)
Console.WriteLine("第一个矩阵和第二个矩阵的除法运算结果是:");
MatrixCalc.MatrixCalc Div = new MatrixCalc.MatrixCalc(); //实例化
var DivResult = Div.DivMatrixs(matrix1, matrix2);//调用加法方法(注意矩阵维度)
Console.WriteLine(DivResult);
Console.WriteLine("\n"); //进行矩阵的点除法运算(正向点除法)
Console.WriteLine("第一个矩阵和第二个矩阵的点除法运算结果是:");
MatrixCalc.MatrixCalc DotDiv = new MatrixCalc.MatrixCalc(); //实例化
var DotDivResult = DotDiv.DotDivMatrixs(matrix1, matrix2);//调用加法方法(注意矩阵维度)
Console.WriteLine(DotDivResult);
Console.WriteLine("\n"); //进行矩阵的平方法运算(第二个值是平方值,不是两个矩阵的平方运算)
Console.WriteLine("第一个矩阵的平方法运算结果是:");
MatrixCalc.MatrixCalc Square = new MatrixCalc.MatrixCalc(); //实例化
var SquareResult = Square.SquareMatrixs(matrix1, 2);//调用加法方法
Console.WriteLine(SquareResult);
Console.WriteLine("\n"); //进行矩阵的逆矩阵运算
Console.WriteLine("第一个矩阵逆矩阵运算结果是:");
MatrixCalc.MatrixCalc Inv = new MatrixCalc.MatrixCalc(); //实例化
var InvResult = Inv.InvMatrix(matrix1);//调用加法方法(注意矩阵维度)
Console.WriteLine(InvResult);
Console.WriteLine("\n"); //进行矩阵的转置运算
Console.WriteLine("第一个矩阵转置矩阵运算结果是:");
MatrixCalc.MatrixCalc Trans = new MatrixCalc.MatrixCalc(); //实例化
var TransResult = Trans.TransMatrix(matrix1);//调用加法方法(注意矩阵维度)
Console.WriteLine(TransResult);
Console.WriteLine("\n"); //进行矩阵的行列式运算
Console.WriteLine("第一个矩阵行列式运算结果是:");
MatrixCalc.MatrixCalc Det= new MatrixCalc.MatrixCalc(); //实例化
var DetResult = Det.DetMatrix(matrix1);//调用加法方法
Console.WriteLine(DetResult);
Console.WriteLine("\n"); //进行矩阵的秩运算
Console.WriteLine("第一个矩阵秩运算结果是:");
MatrixCalc.MatrixCalc Rank = new MatrixCalc.MatrixCalc(); //实例化
var RankResult = Rank.RankMatrix(matrix1);//调用加法方法
Console.WriteLine(RankResult);
Console.WriteLine("\n"); //进行矩阵的特征值运算
Console.WriteLine("第一个矩阵特征值运算结果是:");
MatrixCalc.MatrixCalc Eig = new MatrixCalc.MatrixCalc(); //实例化
var EigResult = Eig.EigMatrix(matrix1);//调用加法方法
Console.WriteLine(EigResult);
Console.WriteLine("\n"); } }
}

3. 和MATLAB运行结果一致  

Matlab高级教程_第二篇:MATLAB和C#一些常用的矩阵运算方法的转换的更多相关文章

  1. Matlab高级教程_第二篇:MATLAB和C#对应数据类型的讲解(多讲一点儿C#的矩阵运算)

    1. MATLAB对应C#的数据类型主要在引入的父类库MWArray当中.有如下对应规则 .NET TYPE MWArrayTYPE MATLAB Type System.Double MWNumer ...

  2. Matlab高级教程_第二篇:一个简单的混编例子

    1. 常用的混编是MATLAB和VS两个编辑器之间的混编方式. 2. 因为MATLAB的核是C型语言,因此常见的混编方式是MATLAB和C型语言的混编. 3. 这里介绍一个简单的MATLAB语言混编成 ...

  3. Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-2

    1 MATLAB并行计算-从个人桌面到远程集群和云(陈伟/魏奋)视频摘录笔记 https://cn.mathworks.com/videos/parallel-computing-with-matla ...

  4. Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-1

    1 更高级的算法牵扯到更多重的循环和复杂的计算,尤其是现在人工智能的算法尤其如此.有些历史知识的人能够了解到,人工智能的很多基本算法其实近百年之前就有了,但是当时的计算机技术达不到去实现这些算法的要求 ...

  5. Matlab高级教程_第二篇:关于MATLAB转C#过程中遇到输出两组参数的问题

    1. 在matlab的m函数很可能遇到原函数[a,b] = func(a); 这样的两个输出参数. 2. 在观察C#生成后定义中我们发现: public MWArray HP(); public MW ...

  6. Matlab高级教程_第二篇:Matlab相见恨晚的模块_01_定时器

    MATLAB的定时器功能(timer函数): 1 从MATLAB6.5版本开始,MATLAB开始支持定时器.相对于传统的pause函数来说,定时器要强大的多,不仅可以等效实现pause的功能,还可以显 ...

  7. Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-关于parfor的问题

    1 我们知道MATLAB支持并行运行一般有四种模式: 第一种模式:本机调用多核CPU性能并行运算 第二种模式:本机调用GPU性能并行运算 第三种模式:多计算机组成集群,调用集群CPU性能并行运算 第四 ...

  8. Matlab高级教程_第二篇:关于MATLAB转C#过程中MWArray到C#数组,C#数组到MWArray相互转换

    Matlab传递数据时使用的方法,那么Matlab计算完成后在C#中应该怎么获取它的计算数据呢? 需要遵循两个基本步骤: 弄清楚Matlab函数传回的数据到底是什么格式?struct?cell?cha ...

  9. Matlab高级教程_第二篇:Matlab2016a和VS2013混合

    1. 首先把VS2017的XML两个配置文件放到 2. 然后一步一步的进行选择: 3. 2016版本的deploytool工具已经改版了,具体详细使用如下 4. 编写一个测试函数 我们编译成C#语言的 ...

随机推荐

  1. 微服务基础——厉害了!API网关

    微服务刚刚诞生的时候,人们将服务进行拆分,实现服务之间的松耦合,并且每个服务有专门的团队维护,然后客户端直接和各个子服务进行交互.比如,订单,商品,会员服务. 那么这种客户端直接和后端服务交互的方式会 ...

  2. 理解Spring Boot Actuator

    Spring Boot Actuator 用于监控和管理spring应用,可通过HTTP Endpoint或JMX Bean与其交互.

  3. 使用Spring Data Mongodb的MongoRepository类进行增删改查

    Spring Data Mongodb提供一套快捷操作 mongodb的方法,创建Dao,继承MongoRepository,并指定实体类型和主键类型. public interface CmsPag ...

  4. Java SE 5.0(JDK 1.5)新特性

    目录 自动装箱与拆箱 枚举(常用来设计单例模式) 静态导入static import 可变参数(Varargs) 内省(Introspector) 泛型(Generics) For-Each循环 ja ...

  5. 软件设计之基于Java的连连看小游戏(三)——所有功能的实现

    新年快乐!期末接二连三的考试实在太忙了忘记连连看没有更新完,今天想要学习生信时才发现.所以这次直接把连连看所有功能全部放上. 在传统的连连看的基础上,我增加了上传头像的功能,即可以自行上传图片作为游戏 ...

  6. nginx基础知识小结

    配置文件讲解: #user nobody; #开启进程数 <= CPU数 worker_processes 1; #错误日志保存位置 #error_log logs/error.log; #er ...

  7. javaweb05 文件的上传一

    2.使用fileupload组件完成文件的上传应用 1).需求: I. 上传 >在upload.jsp页面上使用jQuery实现"新增一个附件","删除附件&quo ...

  8. MacOS常用快捷键

    command+空格 打开Spotlight command+m 最小化当前窗口 control+command+f     最大化当前窗口 command+q                    ...

  9. linux常用命令及小知识点

    网络跟踪: 1.mtr  2.tractroute  3.ping 下载命令 curl -O  /path/xx wget 直接下载,将文件下载至当前目录 2.linux非22端口进行双机互信时候pu ...

  10. 解决ubuntu16.04 ‘E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用) ’ 问题

    问题: 当运行sudo apt-get install/update/其他命令时,会出现如下提示: E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资 ...