n=(n_min:10:n_max); N=n./1000; Tq=-19.313+295.27.*N-165.44.*N.^2+40.874.*N.^3-3.8445.*N.^4; s=2*pi*r*0.001; Ft=Tq.*ig(i).*i0.*eT./r; ua=n./ig(i)./i0.*60.*s; Ff=m*g*f; Fw=CDA.*ua.^2./21.15; F=Ff+Fw; k=Ff-(Ff+Fw); i=tan(asin(k/(m*g))); str=['r','m','b','c','g']; plot(ua,i,str(i)); grid on; hold on; end xlabel('ua(Km/h)'),ylabel('i(%)')
完整程序
n_min=600;n_max=4000;
m1=2000;m0=1800;m=3880;
r=0.367;
eT=0.85;
f=0.013;
CDA=2.77;
i0=5.83;
If=0.218;Iw1=1.798;Iw2=3.598;
ig=[5.56294 2.76294 1.64294 1.00294 0.79294];
L=3.2;
a=1.947;
b=L-a;
hg=0.9;
g=9.8;
for i=1:5
下接题干问题
matlab中,下标索引必须为正整数类型或逻辑类型是哪里出错了?程序如下,所有量都已经赋值了。
答案:2 悬赏:0 手机版
解决时间 2021-04-24 04:41
- 提问者网友:树红树绿
- 2021-04-23 11:21
最佳答案
- 五星知识达人网友:梦中风几里
- 2021-04-23 11:29
你给的程序不全,比较难看到问题
看上去可能出现问题的是
你的i是通过i=tan(asin(k/(m*g)))计算出来的,可能不是整数
你用ig(i),str(i)是要引用str数组中第i个元素
所以就抱错了,因为数组的下标只能是整数,你可能要数据中第1.5个数吧
就是这一语
i=tan(asin(k/(m*g)));
和这一句
plot(ua,i,str(i));
原来你的i是用于循环的控制的数是1~5
但是你计算得到的tan(asin(k/(m*g)))又赋值给i
你要画plot(ua,i,str(i)); ua和tan(asin(k/(m*g)))的关系,循环改用5种不同颜色
只要将这两句赋值的i换个名字就可以了,例如
I=tan(asin(k/(m*g)));
plot(ua,I,str(i));
看上去可能出现问题的是
你的i是通过i=tan(asin(k/(m*g)))计算出来的,可能不是整数
你用ig(i),str(i)是要引用str数组中第i个元素
所以就抱错了,因为数组的下标只能是整数,你可能要数据中第1.5个数吧
就是这一语
i=tan(asin(k/(m*g)));
和这一句
plot(ua,i,str(i));
原来你的i是用于循环的控制的数是1~5
但是你计算得到的tan(asin(k/(m*g)))又赋值给i
你要画plot(ua,i,str(i)); ua和tan(asin(k/(m*g)))的关系,循环改用5种不同颜色
只要将这两句赋值的i换个名字就可以了,例如
I=tan(asin(k/(m*g)));
plot(ua,I,str(i));
全部回答
- 1楼网友:骨子里都是戏
- 2021-04-23 12:18
1. 下标可能为负数
2. 可能出现变量名称重复
当有时出现有时没有出现时,可能是由于循环使数据不同,导致下标有时为整数,有时为负数,有时为正整数。
参考资料
豆瓣.豆瓣[引用时间2018-1-20]
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯