本人菜鸟一枚,做个图像,需要用界面输入几个变量的数值进行运算,总是出错。
界面如下图,需输入六个变量进行计算
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
Va=str2num(get(handles.edit1,'string'));
Vb=str2num(get(handles.edit2,'string'));
Pa=str2num(get(handles.edit3,'string'));
Pb=str2num(get(handles.edit4,'string'));
Ta=str2num(get(handles.edit5,'string'));
Tb=str2num(get(handles.edit6,'string'));
A=str2num(get(handles.edit7,'string'));
k=1.4;
K=0.0397
Rg=286.9865;
Cv=717.4663;
Cp=1.0045e+003;
t=0.00003;
bata=(2/(k+1))^(k/(k-1));
Ma=Pa*Va/(Rg*Ta);%质量
Mb=Pb*Vb/(Rg*Tb);
mda=Pa/(Rg*Ta)%1罐内的密度
mdb=Pb/(Rg*Tb)%2罐内的密度
n=0;
N=[n];
Paa=[Pa];
Pbb=[Pb];
while Pa-Pb>=0.0001
if Pa*bata>=Pb;%声速流动
mda=Pa/(Rg*Ta);%1罐内的密度
%mdb=Pb/(Rg*Tb);%2罐内的密度
S2=(2*k*Rg*Ta/(k+1))^(1/2); %出口处的临界速度值
md2=mda*(2/(k+1))^(1/(k-1));
m=md2*A*S2*0.0003;%质量流量
Tb=(m*Ta+Mb*Tb)/(m+Mb);
Mb=Mb+m;
Pb=Mb*Rg*Tb/Vb
Pbb=[Pbb Pb];
Ma=Ma-m;
Pa=Ma*Rg*Ta/Va
Paa=[Paa Pa];
n=n+t;
N=[N n];
else
mda=Pa/(Rg*Ta);%1罐内的密度
md2=(Pa/Pb)^(1/k)*mda
S2=((Pa-Pb)/md2)^(1/2)
%mdb=Pb/(Rg*Tb);%2罐内的密度
m=md2*A*S2*0.0003;%质量流量
Tb=(m*Ta+Mb*Tb)/(m+Mb);
Mb=Mb+m;
Pb=Mb*Rg*Tb/Vb
Pbb=[Pbb Pb];
Ma=Ma-m;
Pa=Ma*Rg*Ta/Va
Paa=[Paa Pa];
n=n+t;
N=[N n];
end
end
Pa=real(Pa);
Pb=real(Pb);
plot(Paa,Pbb);
![Matlab做gui界面问题]()
1 |