Matlab高级教程_第二篇:MATLAB和C#一些常用的矩阵运算方法的转换
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#一些常用的矩阵运算方法的转换的更多相关文章
- Matlab高级教程_第二篇:MATLAB和C#对应数据类型的讲解(多讲一点儿C#的矩阵运算)
1. MATLAB对应C#的数据类型主要在引入的父类库MWArray当中.有如下对应规则 .NET TYPE MWArrayTYPE MATLAB Type System.Double MWNumer ...
- Matlab高级教程_第二篇:一个简单的混编例子
1. 常用的混编是MATLAB和VS两个编辑器之间的混编方式. 2. 因为MATLAB的核是C型语言,因此常见的混编方式是MATLAB和C型语言的混编. 3. 这里介绍一个简单的MATLAB语言混编成 ...
- Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-2
1 MATLAB并行计算-从个人桌面到远程集群和云(陈伟/魏奋)视频摘录笔记 https://cn.mathworks.com/videos/parallel-computing-with-matla ...
- Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-1
1 更高级的算法牵扯到更多重的循环和复杂的计算,尤其是现在人工智能的算法尤其如此.有些历史知识的人能够了解到,人工智能的很多基本算法其实近百年之前就有了,但是当时的计算机技术达不到去实现这些算法的要求 ...
- Matlab高级教程_第二篇:关于MATLAB转C#过程中遇到输出两组参数的问题
1. 在matlab的m函数很可能遇到原函数[a,b] = func(a); 这样的两个输出参数. 2. 在观察C#生成后定义中我们发现: public MWArray HP(); public MW ...
- Matlab高级教程_第二篇:Matlab相见恨晚的模块_01_定时器
MATLAB的定时器功能(timer函数): 1 从MATLAB6.5版本开始,MATLAB开始支持定时器.相对于传统的pause函数来说,定时器要强大的多,不仅可以等效实现pause的功能,还可以显 ...
- Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-关于parfor的问题
1 我们知道MATLAB支持并行运行一般有四种模式: 第一种模式:本机调用多核CPU性能并行运算 第二种模式:本机调用GPU性能并行运算 第三种模式:多计算机组成集群,调用集群CPU性能并行运算 第四 ...
- Matlab高级教程_第二篇:关于MATLAB转C#过程中MWArray到C#数组,C#数组到MWArray相互转换
Matlab传递数据时使用的方法,那么Matlab计算完成后在C#中应该怎么获取它的计算数据呢? 需要遵循两个基本步骤: 弄清楚Matlab函数传回的数据到底是什么格式?struct?cell?cha ...
- Matlab高级教程_第二篇:Matlab2016a和VS2013混合
1. 首先把VS2017的XML两个配置文件放到 2. 然后一步一步的进行选择: 3. 2016版本的deploytool工具已经改版了,具体详细使用如下 4. 编写一个测试函数 我们编译成C#语言的 ...
随机推荐
- 关于Wasserstein GAN的一些笔记
这篇笔记基于上一篇<关于GAN的一些笔记>. 1 GAN的缺陷 由于 $P_G$ 和 $P_{data}$ 它们实际上是 high-dim space 中的 low-dim manifol ...
- 吴裕雄--天生自然 JAVASCRIPT开发学习:switch 语句
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 7.CSRF攻击和文件上传漏洞攻击
一.CSRF攻击及防范措施 1.概念 请求来源于其他网站,请求并不是用户的意愿,而是伪造的请求,诱导用户发起的请求 2.场景 攻击者盗用了你的身份,以你的名义发送恶意请求.CSRF能够做的事情包括:以 ...
- part7 vuex实现数据共享
vuex 是数据框架(一个插件)(单项数据的改变流程,组件改数据必须先调Action用dispatch方法) 大型项目vue只能承担视图层的主要内容 大量数据传递的时候,往往需要一个数据框架辅助 例子 ...
- Tensorflow学习教程------利用卷积神经网络对mnist数据集进行分类_利用训练好的模型进行分类
#coding:utf-8 import tensorflow as tf from PIL import Image,ImageFilter from tensorflow.examples.tut ...
- GPU 、APU、CUDA、TPU、FPGA介绍
购买显卡主要关注:显存.带宽和浮点运算数量 GPU :图形处理器(英语:Graphics Processing Unit,缩写:GPU),又称显示核心.视觉处理器.显示芯片,是一种专门在个人电脑. ...
- 洛谷 P5662 纪念品
题目传送门 解题思路: 一道DP,完全背包,不过有点不同于模板.因为本题的每件物品可自由在不同的时间买卖,且不同时间价格不同. 这道题的关键在于要明白一个非常傻逼的性质,就是我在某天买了第i个物品,然 ...
- Arduino串口的一些高级用法
1.配置串口通信数据位.校验位.停止位通常我们使用Serial.begin(speed)来完成串口的初始化,这种方式,只能配置串口的波特率.而使用Serial.begin(speed, config) ...
- pycharm 的 使用 设置智能目录 Pycharm 断点跳转及 Step Over/Step Into/Step Out 等的区别
pycharm 右键点击文件夹 有个mark directiory as 根据需要给目录进行设置 Pycharm调试程序时,有时需要直接从第一个断点跳转至第二个断点,如果还是用单步调试的话就非常 ...
- StarUML类图相关——关联、聚合、组合、泛化、依赖、实现
在阅读设计模式相关的书籍,或者其他一些项目.相关博客等等,经常会遇到类图,它对于一个类的信息,如变量.方法及其可见性,类与类(接口)之间的继承关系.依赖关系.聚合关系.组合关系等,都可以比较形象得当地 ...