一个matlab问题,vc=3;a=0.4;f=0:0.1:400;h=0:0.01:6;[ff,hh]=meshgrid(f,h);NSA=1000*vc./(pi*ff).*((pi*ff.*hh./(1000*vc)).^2-(1-a)^2).^0.5-1000*(1-a)*vc./(pi*ff)....*acos(1000*(1-a)*vc./(pi*ff.*hh));surf(ff,hh,NSA)出现错误提示为:Error using =
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/25 05:55:23
一个matlab问题,vc=3;a=0.4;f=0:0.1:400;h=0:0.01:6;[ff,hh]=meshgrid(f,h);NSA=1000*vc./(pi*ff).*((pi*ff.*hh./(1000*vc)).^2-(1-a)^2).^0.5-1000*(1-a)*vc./(pi*ff)....*acos(1000*(1-a)*vc./(pi*ff.*hh));surf(ff,hh,NSA)出现错误提示为:Error using =
一个matlab问题,
vc=3;a=0.4;f=0:0.1:400;h=0:0.01:6;[ff,hh]=meshgrid(f,h);NSA=1000*vc./(pi*ff).*((pi*ff.*hh./(1000*vc)).^2-(1-a)^2).^0.5-1000*(1-a)*vc./(pi*ff)....*acos(1000*(1-a)*vc./(pi*ff.*hh));surf(ff,hh,NSA)出现错误提示为:Error using ==> surf at 78X,Y,Z,and C cannot be complex.怎么改啊,求指教
一个matlab问题,vc=3;a=0.4;f=0:0.1:400;h=0:0.01:6;[ff,hh]=meshgrid(f,h);NSA=1000*vc./(pi*ff).*((pi*ff.*hh./(1000*vc)).^2-(1-a)^2).^0.5-1000*(1-a)*vc./(pi*ff)....*acos(1000*(1-a)*vc./(pi*ff.*hh));surf(ff,hh,NSA)出现错误提示为:Error using =
原因是,NSA的表达式中,有一个要进行开方的项
(pi*ff.*hh./(1000*vc)).^2-(1-a)^2计算出现负数,所以导致NSA为复数,而surf绘制曲面不允许复数数据存在.
可以很容易检验:
>> tmp=(pi*ff.*hh./(1000*vc)).^2-(1-a)^2;>> min(tmp(:))
ans =
-0.3600
>> sum(tmp(:)<0)
ans =
1396514
说明该项最小值为-0.36,而小于0的一共有1396514个元素.
怎样修改,取决于你的那个表达式到底是怎么回事,是否定义域不正确,或者应该对于开方的项要取绝对值?
另外顺便说一句,你取的点是否过于密集了?尤其f取了4001个点,导致数据量很大,占用存储空间大,绘图缓慢却又不能带来任何实际的好处.