[已解决] 程序计算出错

[复制链接]
wangcheng031 发表于 2015-5-15 11:26:16
str={'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,x,y,z,v,w'};
strdef={'150000,150000,180000,150000,150000,180000,150000,150000,180000,75000,75000,900000,405.25,414,489.9,173.25,178,193.9,81.59,80.5,109.33,153.9,142.0,130.8,0.7,0.3'};
DataInput=InputDlg(str,'输入 a b c d e f g h i j k l m n o p q r s t u v w x y z 的值',1,strdef);
for n=1:26;
Data=str2num(DataInput{1,n});
a=Data(1,1);
b=Data(1,2);
c=Data(1,3);
d=Data(1,4);
e=Data(1,5);
f=Data(1,6);
g=Data(1,7);
h=Data(1,8);
i=Data(1,9);
j=Data(1,10);
k=Data(1,11);
l=Data(1,12);
m=Data(1,13);
n=Data(1,14);
o=Data(1,15);
p=Data(1,16);
q=Data(1,17);
r=Data(1,18);
s=Data(1,19);
t=Data(1,20);
u=Data(1,21);
v=Data(1,25);
w=Data(1,26);
x=Data(1,22);
y=Data(1,23);
z=Data(1,24);
Sa=sqrt((y-x)/(m/(d^2)+(v^2)*p/(g^2)+(w^2)*s/(j^2)-n/(e^2)-(v^2)*q/(h^2)-(w^2)*t/(k^2)));
Sb=sqrt((z-y)/(n/(e^2)+(v^2)*q/(h^2)+(w^2)*t/(k^2)-o/(f^2)-(v^2)*r/(i^2)-(w^2)*u/(l^2)));
Sc=sqrt((x-z)/(o/(f^2)+(v^2)*r/(i^2)+(w^2)*u/(l^2)-m/(d^2)-(v^2)*p/(g^2)-(w^2)*s/(j^2)));
Sd=sqrt(x/(o/(f^2)+(v^2)*r/(i^2)+(w^2)*u/(l^2)-(m+o)/((d+f)^2)+(v^2)*(p+r)/((g+i)^2)+(w^2)*(s+u)/((j+l)^2)));
Se=sqrt(z/((m+n)/((d+e)^2)+(v^2)*(p+q)/((g+h)^2)+(w^2)*(s+t)/((j+k)^2)-(m+n+o)/((d+e+f)^2)-(v^2)*(p+q+r)/((g+h+i)^2)-(w^2)*(s+t+u)/((j+k+l)^2)));
str_SdSe=num2str('[Sd;Se]');
set(handles.edit2,'string',str_SdSe);
计算不出来Sa  Sb   Sc   Sd    Se的值,显示Data=str2num(DataInput{1,n});有错误。

最佳答案


gaoeqin 发表于 2015-5-15 11:46:48
我把你的代码改了下  你参考下~~~


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~我是分割线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,x,y,z,v,w]=...
    deal(150000,150000,180000,150000,150000,180000,150000,150000,180000,...
    75000,75000,900000,405.25,414,489.9,173.25,178,193.9,81.59,80.5,109.33,...
    153.9,142.0,130.8,0.7,0.3);
Sa=sqrt((y-x)/(m/(d^2)+(v^2)*p/(g^2)+(w^2)*s/(j^2)-n/(e^2)-(v^2)*q/(h^2)-...
    (w^2)*t/(k^2)));
Sb=sqrt((z-y)/(n/(e^2)+(v^2)*q/(h^2)+(w^2)*t/(k^2)-o/(f^2)-(v^2)*r/(i^2)-...
    (w^2)*u/(l^2)));
Sc=sqrt((x-z)/(o/(f^2)+(v^2)*r/(i^2)+(w^2)*u/(l^2)-m/(d^2)-(v^2)*p/(g^2)-...
    (w^2)*s/(j^2)));
Sd=sqrt(x/(o/(f^2)+(v^2)*r/(i^2)+(w^2)*u/(l^2)-(m+o)/((d+f)^2)+(v^2)*(p+r)...
    /((g+i)^2)+(w^2)*(s+u)/((j+l)^2)));
Se=sqrt(z/((m+n)/((d+e)^2)+(v^2)*(p+q)/((g+h)^2)+(w^2)*(s+t)/((j+k)^2)-...
    (m+n+o)/((d+e+f)^2)-(v^2)*(p+q+r)/((g+h+i)^2)-(w^2)*(s+t+u)/((j+k+l)^2)));
str_SdSe=num2str('[Sd;Se]');
set(handles.edit2,'string',str_SdSe);


~~~~~~~~~~~~~~~~~~~~我是分割线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


回复此楼

7 条回复


gaoeqin 发表于 2015-5-15 11:46:48
我把你的代码改了下  你参考下~~~


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~我是分割线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,x,y,z,v,w]=...
    deal(150000,150000,180000,150000,150000,180000,150000,150000,180000,...
    75000,75000,900000,405.25,414,489.9,173.25,178,193.9,81.59,80.5,109.33,...
    153.9,142.0,130.8,0.7,0.3);
Sa=sqrt((y-x)/(m/(d^2)+(v^2)*p/(g^2)+(w^2)*s/(j^2)-n/(e^2)-(v^2)*q/(h^2)-...
    (w^2)*t/(k^2)));
Sb=sqrt((z-y)/(n/(e^2)+(v^2)*q/(h^2)+(w^2)*t/(k^2)-o/(f^2)-(v^2)*r/(i^2)-...
    (w^2)*u/(l^2)));
Sc=sqrt((x-z)/(o/(f^2)+(v^2)*r/(i^2)+(w^2)*u/(l^2)-m/(d^2)-(v^2)*p/(g^2)-...
    (w^2)*s/(j^2)));
Sd=sqrt(x/(o/(f^2)+(v^2)*r/(i^2)+(w^2)*u/(l^2)-(m+o)/((d+f)^2)+(v^2)*(p+r)...
    /((g+i)^2)+(w^2)*(s+u)/((j+l)^2)));
Se=sqrt(z/((m+n)/((d+e)^2)+(v^2)*(p+q)/((g+h)^2)+(w^2)*(s+t)/((j+k)^2)-...
    (m+n+o)/((d+e+f)^2)-(v^2)*(p+q+r)/((g+h+i)^2)-(w^2)*(s+t+u)/((j+k+l)^2)));
str_SdSe=num2str('[Sd;Se]');
set(handles.edit2,'string',str_SdSe);


~~~~~~~~~~~~~~~~~~~~我是分割线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


回复此楼

wangcheng031 发表于 2015-5-15 12:18:10
gaoeqin 发表于 2015-5-15 11:46
我把你的代码改了下  你参考下~~~

那些数值是必须要通过通过对话框输入的,而这样的话就不能通过数据对话框输入了

gaoeqin 发表于 2015-5-15 12:20:29
wangcheng031 发表于 2015-5-15 12:18
那些数值是必须要通过通过对话框输入的,而这样的话就不能通过数据对话框输入了 ...

一样的  我的意思是你传递数值的时候  用deal  不要循环

wangcheng031 发表于 2015-5-15 12:29:26
gaoeqin 发表于 2015-5-15 12:20
一样的  我的意思是你传递数值的时候  用deal  不要循环

哦。。那意思是不要for循环。。

wangcheng031 发表于 2015-5-15 12:30:15
gaoeqin 发表于 2015-5-15 12:20
一样的  我的意思是你传递数值的时候  用deal  不要循环

那个等号后面有三个点,还要吗?

gaoeqin 发表于 2015-5-15 14:45:41
wangcheng031 发表于 2015-5-15 12:30
那个等号后面有三个点,还要吗?

...
这个是matlab的换行符号~~~是为了增强程序的可视性和可读性

如果程序不需要换行继续输入就可以不用   ...

wangcheng031 发表于 2015-5-16 09:05:03
gaoeqin 发表于 2015-5-15 14:45
...
这个是matlab的换行符号~~~是为了增强程序的可视性和可读性

哦,谢谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表