MATLAB 程序求助

%definethesequenceoftheprogram[A,B,U,Y,M]=define_matrix();[H,D,I,R1,C2,C1,R2,P,Cd,RO,... %define the sequence of the program
[A,B,U,Y,M]=define_matrix();
[H,D,I,R1,C2,C1,R2,P,Cd,RO,Q0,X1,P0,G]=input_parameter();
[X2,C,A1]=calculation_parameter(Q0,Cd,P,R2,D,RO,G);
[M]=calculation_matrix(M,A,B,U,Y,I,R1,C2,C1,R2,P0,P,X2,X2,A1,Q0,H,C);
graph_plot(M);

function [A,B,U,Y,M]=define_matrix()
%A_state_matrix
A=zeros(3,3);
%B=input_matrix
B=zeros(3,2);
%U_input_vector
U=zeros(2,1);
%Y_state_matrix
Y=zeros(3,1);
%M_output_matrix
M=zeros(1000,4);

function [H,D,I,R1,C2,C1,R2,P,Cd,RO,Q0,X1,P0,G]=input_parameter()
%步长H(s),阀芯直径D(cm),惯性质量I(kg),阀孔阻尼R1(bar_s/cm3)
%弹簧柔度C2(cm/kg),管道液容C1(cm3/bar),泄油液阻R2(bar_s/cm3)
%设定压力P(bar),初始压力P0(bar),流量系数Cd,油液密度RO(kg/cm3)
%泵理论流量Q0(cm3/s),阀口遮盖量X1(cm),重力加速度G(cm/s2)
H=6e-5; D=1.2; I=6.3e-5; R1=0.4; R2=1.5; C2=0.02;
C1=0.08; P=30; Cd=0.7; RO=0.0009; Q0=460; X1=0.14; P0=6; G=981;

function [X2,C,A1]=calculation_parameter(Q0,Cd,P,R2,D,RO,G)
PI=3.1415926;
X2=(Q0-P/R2)/(Cd*PI*D*sqrt(2*G*P/RO));
C=-Cd*PI*D*sqrt(2*G/RO);
A1=PI*D*D/4;

function [M]=calculation_matrix(M,A,B,U,Y,I,R1,C2,C1,R2,P0,P,X1,
X2,A1,Q0;H,C)
T=0;
A(1,1)=-A1*A1*R1/I; A(1,2)=-1/C2; A(1,3)=A1/C1;
A(2,1)=1/I; A(3,1)=-A1/I; A(3,3)=-1/(R2*C1);
B(1,1)=-1; B(3,2)=1;
U(1)=P*A1-(X1+X2)/C2; U(2)=Q0;
Y(1)=0; Y(2)=0; Y(3)=P0*C1;
M(1,1)=0; M(1,2)=Y(1)/I; M(1,3)=Y(2); M(1,4)=P0;
for j=1:1000,
[Y,T]=R_T(A,B,U,Y,H,X1,C,C1,T);
M(j+1,1)=T; M(j+1,2)=Y(1)/I; M(j+1,3)=Y(2); M(j+1,4)=Y(3)/C1;
end

function [Y,T]=R_T(A,B,U,Y,H,X1,C,C1,T)
%constrain
if Y(2)<0
Y(2)=0;
end
if Y(2)==0&&Y(1)<0
Y(1)=0;
end

%nonlinear_situation
if Y(2)>X1
A(3,3)=A(3,3)+C*(Y(2)-X1)*sqrt(Y(3)/C1);
end

W=1/3*[0.5,1,1,0.5];
Q=[0.5,0.5,1,0];
TW=T; BB=Y; YW=Y;
for i=1:4
Dy=A*Y+B*U;
T=TW+W(i)*H;
Y=YW+H*Q(i).*Dy;
BB=BB+H*W(i).Dy;
end
Y=BB;
if Y(2)<0
Y(2)=0;
else
if Y(2)==0&&Y(1)<0
Y(1)=0;
end
end

function graph_plot(M)
%%plot_graph
figure(1);
plot(M(:,1),M(:,2));
figure(2);
plot(M(:,1),M(:,3));
figure(3);
plot(M(:,1),M(:,4));
展开
 我来答
假寐1990
2014-07-05 · TA获得超过228个赞
知道答主
回答量:26
采纳率:0%
帮助的人:31.4万
展开全部
??? Error: File: untitled.m Line: 8 Column: 1
Function definitions are not permitted at the prompt or in scripts.

这个是提示说你写的函数文件要单独建立在一个函数文件中,而不能直接将函数放在脚本文件中。具体方法如下:
一、先建立主程序 main.m
%define the sequence of the program
[A,B,U,Y,M]=define_matrix();
[H,D,I,R1,C2,C1,R2,P,Cd,RO,Q0,X1,P0,G]=input_parameter();
[X2,C,A1]=calculation_parameter(Q0,Cd,P,R2,D,RO,G);
[M]=calculation_matrix(M,A,B,U,Y,I,R1,C2,C1,R2,P0,P,X2,X2,A1,Q0,H,C);
graph_plot(M);

二、建立函数文件1 define_matrix.m
function [A,B,U,Y,M]=define_matrix()
%A_state_matrix
A=zeros(3,3);
%B=input_matrix
B=zeros(3,2);
%U_input_vector
U=zeros(2,1);
%Y_state_matrix
Y=zeros(3,1);
%M_output_matrix
M=zeros(1000,4);

三、建立函数文件2 input_parameter.m
function [H,D,I,R1,C2,C1,R2,P,Cd,RO,Q0,X1,P0,G]=input_parameter()
%步长H(s),阀芯直径D(cm),惯性质量I(kg),阀孔阻尼R1(bar_s/cm3)
%弹簧柔度C2(cm/kg),管道液容C1(cm3/bar),泄油液阻R2(bar_s/cm3)
%设定压力P(bar),初始压力P0(bar),流量系数Cd,油液密度RO(kg/cm3)
%泵理论流量Q0(cm3/s),阀口遮盖量X1(cm),重力加速度G(cm/s2)
H=6e-5; D=1.2; I=6.3e-5; R1=0.4; R2=1.5; C2=0.02;
C1=0.08; P=30; Cd=0.7; RO=0.0009; Q0=460; X1=0.14; P0=6; G=981;

四、建立函数文件3 calculation_parameter.m
function [X2,C,A1]=calculation_parameter(Q0,Cd,P,R2,D,RO,G)
PI=3.1415926;
X2=(Q0-P/R2)/(Cd*PI*D*sqrt(2*G*P/RO));
C=-Cd*PI*D*sqrt(2*G/RO);
A1=PI*D*D/4;

五、建立函数文件4 calculation_matrix.m
function [M]=calculation_matrix(M,A,B,U,Y,I,R1,C2,C1,R2,P0,P,X1,
X2,A1,Q0;H,C)
T=0;
A(1,1)=-A1*A1*R1/I; A(1,2)=-1/C2; A(1,3)=A1/C1;
A(2,1)=1/I; A(3,1)=-A1/I; A(3,3)=-1/(R2*C1);
B(1,1)=-1; B(3,2)=1;
U(1)=P*A1-(X1+X2)/C2; U(2)=Q0;
Y(1)=0; Y(2)=0; Y(3)=P0*C1;
M(1,1)=0; M(1,2)=Y(1)/I; M(1,3)=Y(2); M(1,4)=P0;
for j=1:1000,
[Y,T]=R_T(A,B,U,Y,H,X1,C,C1,T);
M(j+1,1)=T; M(j+1,2)=Y(1)/I; M(j+1,3)=Y(2); M(j+1,4)=Y(3)/C1;
end

六、建立函数文件5 R_T.m
function [Y,T]=R_T(A,B,U,Y,H,X1,C,C1,T)
%constrain
if Y(2)<0
Y(2)=0;
end
if Y(2)==0&&Y(1)<0
Y(1)=0;
end

%nonlinear_situation
if Y(2)>X1
A(3,3)=A(3,3)+C*(Y(2)-X1)*sqrt(Y(3)/C1);
end

W=1/3*[0.5,1,1,0.5];
Q=[0.5,0.5,1,0];
TW=T; BB=Y; YW=Y;
for i=1:4
Dy=A*Y+B*U;
T=TW+W(i)*H;
Y=YW+H*Q(i).*Dy;
BB=BB+H*W(i).Dy;
end
Y=BB;
if Y(2)<0
Y(2)=0;
else
if Y(2)==0&&Y(1)<0
Y(1)=0;
end
end

七、建立函数文件6 graph_plot.m
function graph_plot(M)
%%plot_graph
figure(1);
plot(M(:,1),M(:,2));
figure(2);
plot(M(:,1),M(:,3));
figure(3);
plot(M(:,1),M(:,4));
追问
太感谢了,是否可以加我为好友,以后有问题了可以方便请教你
追答
可以买一本MATLAB的教材自学,MATLAB不难~天天向上~
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
雅至且陶然M
2020-05-28 · TA获得超过194个赞
知道答主
回答量:2346
采纳率:0%
帮助的人:120万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
韩妃亓官惜珊
2019-10-14 · TA获得超过3786个赞
知道大有可为答主
回答量:3139
采纳率:28%
帮助的人:203万
展开全部
klop>FPHI
at
26
CK=CK*(1.0-Z^2);
改成:
CK=CK.*(1.0-Z.^2);
.运算是matlab特有的,可以查一下用法,也是初学者经常犯的错误
z^2是直接平方是矩阵平方,而只有方矩阵才能平方,而z.^2是对数组或矩阵每个元素分别平方,跟矩阵平方不一样
同样a*b是矩阵乘,a.*b是数组或矩阵的对应元素相乘
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
447lZe
2014-07-05 · 超过65用户采纳过TA的回答
知道答主
回答量:116
采纳率:0%
帮助的人:123万
展开全部
yn(i,a)<0.5
就是yn矩阵第i行第a列元素小于0.5
追问
??? Error: File: untitled.m Line: 8 Column: 1
Function definitions are not permitted at the prompt or in scripts.
这个是怎么回事
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式