作业帮 > 综合 > 作业

关于matlab plot画图的问题

来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/04/20 20:20:33
关于matlab plot画图的问题
首先说明一下,这个程序能够通过运行,但是,画不出图像
clear
clc
D=[50 40 32];
a=[0.7 0.665 0.63175];
% after transforming from Hz to Hw,we got
%real part is:-1/a+(1/a-a)*(1-a*cos(w*D)/(a^2+1-2*a*cos(w*D))
%imaginary part is:(1/a-a)*(-a*sin(w*D)/(a^2+1-2*a*cos(w*D)))
w=-2*pi:0.1:2*pi;
Hw=(atan(( -a(1)*sin(w*D(1))/(a(1)^2+1-2*a(1)*cos(w*D(1))))/(-1/a(1)+(1/a(1)-a(1))*(1-a(1)*cos(w*D(1))/(a(1)^2+1-2*a(1)*cos(w*D(1))))))+atan(( -a(2)*sin(w*D(2))/(a(2)^2+1-2*a(2)*cos(w*D(2))))/(-1/a(2)+(1/a(2)-a(2))*(1-a(2)*cos(w*D(2))/(a(2)^2+1-2*a(2)*cos(w*D(2))))))+atan(( -a(3)*sin(w*D(3))/(a(3)^2+1-2*a(3)*cos(w*D(3))))/(-1/a(3)+(1/a(3)-a(3))*(1-a(3)*cos(w*D(3))/(a(3)^2+1-2*a(3)*cos(w*D(3)))))));
plot(w,Hw)
但是用这个就可以
%Mini Project 5.80---question b
clear
clc
D=[50 40 32];
a=[0.7 0.665 0.63175];
% after transforming from Hz to Hw,we got
%real part is:-1/a+(1/a-a)*(1-a*cos(w*D)/(a^2+1-2*a*cos(w*D))
%imaginary part is:(1/a-a)*(-a*sin(w*D)/(a^2+1-2*a*cos(w*D)))
syms w;
Hw=(atan(( -a(1)*sin(w*D(1))/(a(1)^2+1-2*a(1)*cos(w*D(1))))/(-1/a(1)+(1/a(1)-a(1))*(1-a(1)*cos(w*D(1))/(a(1)^2+1-2*a(1)*cos(w*D(1))))))+atan(( -a(2)*sin(w*D(2))/(a(2)^2+1-2*a(2)*cos(w*D(2))))/(-1/a(2)+(1/a(2)-a(2))*(1-a(2)*cos(w*D(2))/(a(2)^2+1-2*a(2)*cos(w*D(2))))))+atan(( -a(3)*sin(w*D(3))/(a(3)^2+1-2*a(3)*cos(w*D(3))))/(-1/a(3)+(1/a(3)-a(3))*(1-a(3)*cos(w*D(3))/(a(3)^2+1-2*a(3)*cos(w*D(3)))))));
w=-2*pi:0.1:2*pi;
plot(w,subs(Hw))
谁能给我解释一下为什么,关于这个符号变量什么的我查了不明白,我觉得Hw不也是个数组么?最好详细点加个例子.讲的好可以再追加财富最高加100!,
关于matlab plot画图的问题
上面的Hw算出来只有一个点啦,所以plot不行.不报错是因为,其实有画线,只不过y都取同一个值了.给你改了一下,你运行下,是不是你要的图.把下面这行代替你原来的那行求Hw
Hw=(atan(( -a(1)*sin(w*D(1))./(a(1)^2+1-2*a(1)*cos(w*D(1))))./(-1/a(1)+(1/a(1)-a(1))*(1-a(1)*cos(w*D(1))./(a(1)^2+1-2*a(1)*cos(w*D(1))))))+atan(( -a(2)*sin(w*D(2))./(a(2)^2+1-2*a(2)*cos(w*D(2))))./(-1/a(2)+(1/a(2)-a(2))*(1-a(2)*cos(w*D(2))./(a(2)^2+1-2*a(2)*cos(w*D(2))))))+atan(( -a(3)*sin(w*D(3))./(a(3)^2+1-2*a(3)*cos(w*D(3))))./(-1/a(3)+(1/a(3)-a(3))*(1-a(3)*cos(w*D(3))./(a(3)^2+1-2*a(3)*cos(w*D(3)))))));
再问: 我追问一下,我贴了两个不同的程序, 一个出图一个不出图。对于第一个程序,按照你所说的Hw 是一个定值。这样我想到了这个问题简化一下 x=-2*pi:0.1:2*pi; y=sin(x)/x; plot(x,y); y是一个定值,为什么?为什么sin(x)./x就不是定值了?我大概知道./就是每一个值都除以x,而/是矩阵的除法。1*n矩阵乘以n*n的矩阵=1*n的矩阵,也就是说sin(x)/x 应该得到一个n*n的矩阵才对呀?为什么不报错?或者是定值,为什么是定值? 谢谢
再答: 矩阵运算是不满足交换律的! 如果a,b都是1*n的矩阵,那么左除a/b代表求x*b=a这反而方程的解。显然,x是1*1,即标量。 按你所说:1*n矩阵乘以n*n的矩阵=1*n的矩阵,即,a*x=b,那么求x必须用右除x=a\b,这个时候才会给出你想要的n*n的矩阵。
再答: 1*n矩阵乘以n*n的矩阵=1*n的矩阵 a*x=b,如果要求b,必须使用右除x=a\b; 如果是b/a,那求的是x*a=b的x,如果a,b都是1*n的,那x是不是应该是1*1,也就是标量?