当前位置: 首页 > news >正文

使用matlab的大坑,复数向量转置!!!!!变量区“转置变量“功能(共轭转置)、矩阵转置(默认也是共轭转置)、点转置

近期用verilog去做FFT相关的项目,需要用到matlab进行仿真然后和verilog出来的结果来做对比,然后计算误差。近期使用matlab犯了一个错误,极大的拖慢了项目进展,给我人都整emo了,因为怎么做仿真结果都不对,还好整体的代码都是我来写的,慢慢往下找就找到了问题的来源,全网没有看到多少人把这个愚蠢的错误写出来,我来引入一下。

代码错误的表现:复数向量的虚部被取反,正数变成负数,负数变成正数。

首先讲一下我做了什么,以及这个错误出现的原因:

  • 我习惯在变量区查看变量,然后大致对照一下输入输出对不对。
  • 如果一个矩阵是很长的行矩阵,例如1*512,我就习惯把它转置过来看,例如图1中matlab变量区的最左边变量cmplx_wave_single,按照图2,右键点击空白处,然后点击“转置变量”,这样倒过来看会看得更多更全。我以为这个转置就是线性代数的转置,值是不变的,但是!!!!!并不是!!!!!
图1
图1
图二

一、共轭转置和点转置的区别

接下来我们用一段简单的matlab代码解释这个问题

clc; clear; close all;
cmplx_wave_single = 1 + 1j*9;  
cmplx_wave_single_transposition=cmplx_wave_single';
cmplx_wave_single_transposition_point=cmplx_wave_single.';

输入如图

cmplx_wave_single是正常的输出。

cmplx_wave_single_transposition=cmplx_wave_single';是平常我们常用的矩阵转置,也等同于图2使用变量区的“转置变量”的效果。可以看到这实际上是一种共轭转置,即实部不变,虚部取反。在只有实数的情况下,使用这种转置并不会有什么问题,但是一旦是复数,那么虚部的值全部取反就会有大问题!靠!让我再骂一句!太坑了!!!!!

cmplx_wave_single_transposition_point=cmplx_wave_single.';是点转置,不会导致虚部的值有变化,是真正线性代数意义上的转置,只改变值的位置,不改变值的大小。

二、总结

想要不犯这样的错误:

1、如果有手册,可以几倍速看完手册,像学IP核一样,把要学的快速看一遍,不求甚解,这样碰到问题的时候能大概知道问题出在哪个位置

2、当然,如果能在工程中,碰到问题解决问题,这或许才是最好的。GTP不行google,实在google不行就摇人。

3、相信matlab,相信modelsim,适当取消质疑精神,软件很成熟了,有问题一定是没有正确使用软件。

4、碰到一个问题,只要确认方向是对的,问题就出现在路上,就不要避开它,一直抽丝剥茧把它拿下来为止,因为问题不解决,迟早还会碰到。这样迟早还会犯错,必须要弄懂这个问题产生的根本原理,才能放心的进行接下来的工作,否则根基不稳,后续系统变得庞大,根本找不到问题。

就像建设一条高速公路,建设的时候有个地方不知道有坑,但是就是把它绕过去了,一旦高速公路开始运行,出现问题,你会感觉哪哪都是坑,无从下手。

http://www.lryc.cn/news/384586.html

相关文章:

  • 昇思25天学习打卡营第8天|保存与加载
  • 【vueUse库Animation模块各函数简介及使用方法】
  • 汇川H5u小型PLC作modbusRTU从站设置及测试
  • 基于Java的多元化智能选课系统-计算机毕业设计源码040909
  • idea使用maven打包报错GBK不可映射字符
  • 解决Linux系统Root不能远程SSH登录
  • 【java】【控制台】【javaSE】 初级java家教管理系统控制台命令行程序项目
  • (2024)豆瓣电影TOP250爬虫详细讲解和代码
  • am62x芯片安全类型确认(HS-SE, HS-FS or GP)
  • 高通安卓12-在源码中查找应用的方法
  • 民用无人驾驶航空器运营合格证怎么申请
  • [SD必备知识18]修图扩图AI神器:ComfyUI+Krita加速修手抽卡,告别低效抽卡还原光滑细腻双手,写真无需隐藏手势
  • 4.Spring Context 装载过程源码分析
  • mysql之数据存储单元
  • 未来20年人工智能将如何塑造社会
  • Maven的依赖传递、依赖管理、依赖作用域
  • ArcGIS定义1.5度带坐标系与投影转换
  • 艺术与科技的精湛融合:探讨AI绘画与AI动画的交汇点
  • 【移动应用开发期末复习】第五/六章
  • excel FORMULA
  • 【学习】开发板接口
  • 主干网络篇 | YOLOv5/v7 更换骨干网络之 EfficientNet | 卷积神经网络模型缩放的再思考
  • 如何测试Java应用的性能?
  • css 动画
  • # 设置 Linux 安全策略允许本地 IP 开通了访问权限
  • C++初学者指南第一步---14.函数调用机制
  • Apache Flink类型及序列化研读生产应用|得物技术
  • 如何使用代理 IP 防止多个 Facebook 帐户关联 - 最佳实践
  • DDei在线设计器-API-DDeiAbstractShape
  • IPython的使用技巧整理