matlab function里写开方怎么老是提示关于计算复数的错误

发现个很奇怪的问题。在simulink里的matlabfunction中写对于输入的开方,在m文件里用w=sqrt(X)求X的开方结果w,总是提示出错【Domainerr... 发现个很奇怪的问题。在simulink里的matlab function中写对于输入的开方,在m文件里用w=sqrt(X)求X的开方结果w,总是提示出错【Domain error. To compute complex results from real x, use 'sqrt(complex(x))'.】。意思好像是如果要从实数x计算出它相应的复数开方结果,我的应该写成w=sqrt(complex(X))。可是我的X的的确确就只是个正实数而已啊,为什么老是不行?是什么问题?而我后面改了一种方法,就是matlab function里不做开方运算,而是先输出X,出来以后再用simulink的sqrt模块直接求X的开方(如2图),结果是完全可以运行不报错的。为什么我在matlab function里写开方就不行呢?求教大神 展开
 我来答
是只中二渣
2019-06-16
知道答主
回答量:1
采纳率:0%
帮助的人:730
展开全部

因为在matlab里面当sqrt()的输入类型是complex而输出类型的real时,sqrt就会报错;

当x是一个很小的数的时候,由于数值精度问题,有可能x实际上是个复数,

所以假如你要w=sqrt(x)

可以改成w=real(sqrt(complex(x)));

匿名用户
2017-05-29
展开全部
MATLAB概论MATLAB是世界流行的优秀科技应用软件之一。具有功能强大(数值计算、符号计算、图形生成、文本处理及多种专业工具箱)、界面友好,可二次开发等特点。在国内外,已有许多高等院校将其列为本科生、研究生和博士生必须掌握的基本技能。1起源与发展自1984年由美国MathWorks公司推向市场以来,先后发布了多个版本,1993年发布4.0版,1995年发布4.2c版,1996年发布5.0版,1997年发布5.1版,1999年发布5.3版,2000年发布6.0版,目前发布的为6.5版。2基本组成MATLAB主要由MATLAB主程序、Simulink动态仿真系统和MATLAB工具箱三大部分组成。其中MATLAB主程序包括MATLAB语言、工作环境、句柄图形、数学函数库和应用程序接口五个部分;Simulink是用于动态系统仿真的交互式系统,允许用户在屏幕上绘制框图来模拟系统并能动态地控制该系统;工具箱则是MATLAB的基本语句编写的各种子程序集和函数库,用于解决某一方面的特定问题或实现某一类的新算法,是开放的,可以根据需要扩充。3通用命令通用命令是在MATLAB命令窗口中直接键入并执行。常见的如下表所列。名称功能说明clear清除内存中所有的或指定的变量和函数cd显示和改变当前工作目录clc擦除MATLAB工作窗口中所有显示的内容clf擦除MATLAB工作窗口中的图形dir列出当前或指定目录中的文件清单disp在运行中显示变量或文字内容echo控制运行的文字命令是否显示hold控制当前的图形窗口对象是否被刷新home擦除命令窗口中的全部内容pack收集内存碎片以扩大内存空间quit关闭并退出MATLABtype显示所指定文件的全部内容exit退出MATLAB4帮助文件MATLAB为用户提供了非常详尽的帮助文件,最常见的帮助命令是help,直接输入help则列出全部信息,help后加对象则提示对象帮助信息。MATLAB的基本矩阵运算1简单矩阵输入MATLAB最基本、也是最重要的功能就是进行实数矩阵或者复数矩阵的运算。由于向量可作为矩阵的一行或者一列,标量(一个数)则可以作为只含有一个元素的矩阵,故向量和标量都可以作为特殊矩阵来处理。MATLAB的操作和命令对于矩阵而言,和我们平时使用的形式很相似,但它还有自己的一些规定。一、键盘输入对于比较小的简单矩阵,可以使用键盘直接输入,例如:a=1;b=2;c=3x=[5bc;a*ba+cc/b]x=5.00002.00003.00002.00004.00001.5000矩阵生成不但可以使用纯数字,也可以使用变量。矩阵的元素直接排列在方括号内,每行内的元素使用空格或者逗号分开,行与行之间使用分号隔开。大的矩阵可以分行输入,用回车键代替分号,这和我们平时使用的矩阵形式很相近。例如a=[123456]大部分的试验数据使用上面的形式给出的,在处理试验数据中,可以简单的将数据前后加入左右括号,就可以得到矩阵的表示。这种处理可以在脚本文件中进行。二、矩阵生成MATLAB提供了很多生成和操作矩阵的函数。下面给出几个创建矩阵的例子。如果是线性等间距格式生成矩阵,可以使用from:step:to方式。from、step、to分别表示开始值、步长和结束值。例如a=1:2:10a=13579还可以使用linspace命令,如:a=linspace(1,10,5)a=1.00003.25005.50007.750010.0000linespace的三个参数表示开始值、结束值和数据个数。数据个数可以省略,缺省值为100。在画Bode图等应用中,需要使用对数等间隔的数据,可以使用logspace命令生成。Logspace和linspace的参数相同,只是结果不同。2矩阵运算矩阵运算是MATLAB的基础,MATLAB的矩阵运算功能十分强大,并且运算的形式和一般的数学表示十分相似。一、矩阵的转置矩阵的转置用符号’a=[123;456]a=123456b=a'b=142536如果矩阵a为复数矩阵,则a’为共轭转置。a=[12;45],d=a+a*i,c1=d',c2=conj(d),
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式