为什么我们得到不同的值由角命令

42视图(30天)
Guddad的故事
Guddad的故事 2023年6月7日9:10
回答: Sandeep Mishra大约8小时前
当我运行这段代码,我得到结果如下所示
clc,清除所有;关闭所有;
(N =输入的输入信号(N)的基本周期的);
M =输入(输入多少分的傅里叶级数计算(M > N和M = N)的倍数”)
n = 0: n - 1;
x =[罪(2 *π* n / 6)];
k = 0: m - 1;
金额= 0;
n = 0: n - 1;
Ck (k + 1) = x (n + 1) * exp (k - j * 2 *π* * n / n);
和=和+ Ck (k + 1);
结束
Ck (k + 1) = / N;
结束
杂志= abs (Ck); Phase_ang =角(Ck);
disp (Ck); disp (Mag); disp (Phase_ang);
输出
输入信号的基本周期(N) 6
输入多少分的傅里叶级数计算(M = N和M = N)的倍数6
M =
6
我0.0000 + 0.0000 0.0000 - 0.5000 -0.0000 0.0000 0.0000 + 0.0000 + 0.0000我我0.0000 + 0.5000 + 0.0000
0.0000 0.5000 0.0000 0.0000 0.0000 0.5000
0 -1.5708 2.9229 - 1.5075 0.0588 - 1.5708
相角的值应该是
0 0 0 0 -1.5708 1.5708
但对于同一数组如果我使用命令窗口我得到正确的结果
> >角([我0.0000 + 0.0000 0.0000 - 0.5000 -0.0000 0.0000 0.0000 + 0.0000 + 0.0000我我0.0000 + 0.5000 + 0.0000))
ans =
0 0 0 0 -1.5708 1.5708
1评论
Stephen23
Stephen23 2023年6月7日在9:19
编辑:Stephen23 约13小时前
“但对于同一个数组……”
不,这是一个不同的数组,使用不同的值。的值 显示 与四位小数)(默认是不一样 存储在内存中 。所以,如果你只是复制 显示 数据,然后你将会有不同的价值观。
N = 6;
M = 6;
n = 0: n - 1;
x =罪(2 *π* n / 6);%去掉多余的方括号
k = 0: m - 1;
金额= 0;
n = 0: n - 1;
Ck (k + 1) = x (n + 1) * exp (k - j * 2 *π* * n / n);
和=和+ Ck (k + 1);
结束
Ck (k + 1) = / N;
结束
格式长G
Ck
Ck =
列1到3 5.55111512312578 e-17 + 0我-1.66533453693773 e-16 e-17 5.55111512312578 - 0.5 + 3.70074341541719 e-17i列4到6 1.85037170770859 e-17 3.14563190310461 + 2.91747532808639 e-16i e-16 2.22044604925031 + 1.85037170770859 e-17i e-16 + 0.5

登录置评。

答案(1)

Sandeep Mishra
Sandeep Mishra 约5小时前
你好,故事,
我知道你正试图创建一个傅里叶级数与M点,基频N和你也试图找到相位角和系列的大小。
在MATLAB中,“角”p 为您提供功能找到复杂的数组的相位角(- π , π ]区间。
在MATLAB中,默认数据类型的数值” 双精度浮点 “这需要64位,所以储存在你的价值 总和 变量和 Ck 系列有超过4小数点和它不同于你的命令行输入数组。
你可以圆了 Ck 数组到4位小数来得到你想要的结果和比较生成的系列的区别如下。
clc;明确所有;关闭所有;
N = 6;
M = 6;
n = 0: n - 1;
x =[罪(2 *π* n / 6)];
k = 0: m - 1
金额= 0;
n = 0: n - 1
和=和+ x (n + 1) * exp (1 j * 2 *π* k * n / n);
结束
Ck (k + 1) = / N;
结束
杂志= abs (Ck); Phase_ang =角(Ck);
%输入数组
inputArray =(0.0000 + 0.0000我0.0000 - 0.5000 -0.0000 0.0000 0.0000 + 0.0000 + 0.0000我我0.0000 + 0.5000 + 0.0000);
%输入数组和生成结果的区别
差异= Ck - inputArray;
disp(差异);
1.0 e15汽油我0.0555 + 0.0555 * 0.0555 + 0.0000 -0.1665 0.3146 0.0185 + 0.2917 + 0.0370我我0.2220 + 0.0000 + 0.0185
%四舍五入值
Ck =圆(Ck, 4);
disp (Ck);
我0.0000 + 0.0000 0.0000 - 0.5000 0.0000 0.0000 0.0000 + 0.0000 + 0.0000我我0.0000 + 0.5000 + 0.0000
%的角度计算出输入数组
angleInput =角(inputArray);
disp (angleInput)
0 0 0 0 -1.5708 1.5708
%角计算从生成的系列
angleGiven =角(Ck);
disp (angleGiven)
0 0 0 0 -1.5708 1.5708
您可以参考下面的文档,了解更多关于“ ”、“ 双精度浮点 ”、“ 数据类型 “在MATLAB。

类别

找到更多的在语言基础知识帮助中心文件交换

标签

下载188bet金宝搏


释放

R2020a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!