Matlab怎样提取复数数组的角度

[复制链接]
查看11 | 回复3 | 2020-3-21 02:12:08 | 显示全部楼层 |阅读模式
俺刚碰到一个问题,简单的说就是随机建立一个值在-M到M的数组A,这个M是比pi要大那么几倍的,然后把A乘上虚数符号j后一起放到exp中,即B=exp(j*A),B就是一个复数数组了。

好了,现在我把A删掉了,即假设我们不知道A只知道B=exp(j*A)的值了,那么可以用什么方法得到A的值呢?:Q 数学上直接对B取对数再除以j就得到了,但在MATLAB里面有什么方法还是有什么相应的函数呢?谢谢高手指点!
1楼的,明白我问的问题没?我的A本来就不仅仅是在主值区间内的,所以用angle是不行的!

回复

使用道具 举报

千问 | 2020-3-21 02:12:08 | 显示全部楼层
你可以把每一个复数比如2+i3当作字符串用fscanf来读就行了,因为fscanf读数据的格式如果直接读入数组不好把数组分隔开,因此你需要一个数据一个数据的来读。假设你的数据文件在d:\test.txt中,则代码如下a=zeros(100,1);%100是说明作为例子来说明,因为要把数据读到a中,因此只需取一个足够大的数可以使a容纳test.txt中的数据即可a=sym(a);file=fopen('d:\test.txt','rt');data=fscanf(file,'%s',1);i=1;while1ifstrcmp(data,'')==1break;elsea(i)=data;i=i+1;...
回复

使用道具 举报

千问 | 2020-3-21 02:12:08 | 显示全部楼层
“数学上直接对B取对数再除以j”也得不到A,得到的是2n*pi+A。matlab里求辐角的函数是angle,得到的是辐角主值(-pi,pi],单位是弧度这个函数本身就支持矩阵运算的 =================当然明白你的意思,但你明白我的意思了吗?从数学上讲,B=exp(j*A)就不是一个单调函数,是不能从B反推出唯一的A值的。mat...
回复

使用道具 举报

千问 | 2020-3-21 02:12:08 | 显示全部楼层
复数表达,及计算(1)z1= 3 + 4iz1 =3.0000 + 4.0000i(2)z2 = 1 + 2 * iz3=2*exp(i*pi/6)z=z1*z2/z3z2 =1.0000 + 2.0000iz3 =1.7321 + 1.0000iz =0.3349 + 5.5801i...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行