matlab连续梁程序的编制与使用

matlab连续梁程序的编制与使用
matlab连续梁程序的编制与使用

第三章连续梁程序的编制与使用

入结构力学领域中而产生的一种方法,而Matlab

语言正是进行矩阵运算的强大工具,因此,用

Matlab语言编写结构力学程序有更大的优越性。本

章将详细介绍如何利用Matlab语言编制连续梁结

构的计算程序。

矩阵位移法的解题思路是将结构离散为单元

(杆件),建立单元杆端力与杆端位移之间的关系

-单元刚度方程;再将各单元集成为原结构,在满

足变形连续条件和平衡条件时,建立整体刚度方

程;在边界条件处理完毕后,由整体刚度方程解出

节点位移,进而求出结构内力。

用矩阵位移法计算连续梁的步骤如下:

1)整理原始数据,如材料性质、荷载条件、约

束条件等,并进行编码:单元编码、结点编

码、结点位移编码、选取坐标系。

2)建立局部坐标系下的单元刚度矩阵。

3)建立整体坐标系下的单元刚度矩阵。

4)集成总刚。

5)建立整体结构的等效节点荷载和总荷载矩

6)边界条件处理。

7)解方程,求出节点位移。

8)求出各单元的杆端内力。

实际上,上述步骤也是编制Matlab程序的基本

步骤,在求出计算结果后,还可以利用Matlab的绘图功能绘制结构图、内力图、

变形图等等。

图3-1程序流程图

3.1 程序说明

%******************************************************************* % 矩阵位移法解连续梁主程序

%******************************************************************* ●功能:运用矩阵位移法解连续梁的基本原理编制的计算主程序。

●基本思想:结点(结点位移)编码默认为从左至右,从1开始顺序进行;杆

端弯矩的方向默认为逆时针。

●荷载类型:可计算结点荷载,每单元作用的跨中集中力和均布荷载。

●说明:主程序的作用是通过赋值语句、读取和写入文件、函数调用等完成算

法的全过程,即实现程序流程图的程序表达。

%----------------------------------------------------------------------------------------------------- 1 程序准备

format short e %设定输出类型

clear all %清除所有已定义变量

clc %清屏

●说明:

format short e -设定计算过程中显示在屏幕上的数字类型为短格式、科学计数法;

clear all -清除所有已定义变量,目的是在本程序的运行过程中,不会发生变量名相同等可能使计算出错的情况;

clc -清屏,使屏幕在本程序运行开始时

%----------------------------------------------------------------------------------------------------- 2 打开文件

FP1=fopen('input.txt','rt'); %打开输入数据文件存放初始数据FP2=fopen('output.txt','wt'); %打开输出数据文件存放计算结果

●说明:

FP1=fopen('input.txt','rt'); -打开已存在的输入数据文件input.txt,且设置其为只读格式,使程序在执行过程中不能改变输入文件中的数值,并用文件句柄FP1来

FP2=fopen('output.txt','wt'); -打开输出数据文件,该文件不存在时,通过此

命令创建新文件,该文件存在时则将原有内容全部删除。该文件设置为可写格式,可在程序执行过程中向输出文件写入数据。

%----------------------------------------------------------------------------------------------------- 3 读入程序控制信息

NELEM =fscanf(FP1,'%d',1); %单元个数(单元编码总数)

NPOIN =fscanf(FP1,'%d',1); %结点个数(结点编码总数)

NVFIX =fscanf(FP1,'%d',1); %约束个数(零位移总数)

NFPOIN=fscanf(FP1,'%d',1); %结点荷载个数(作用在结点上集中力偶总数) NFPRES=fscanf(FP1,'%d',1); %非结点荷载数(作用在单元上分布荷载总数) YOUNG=fscanf(FP1,'%f',1); %弹性模量

●说明:

从输入文件FP1中读入单元个数,结点个数,约束个数,结点荷载个数,非结点荷载个数,弹性模量;

程序中弹性模量仅输入了一个值,表明本程序仅能求解一种材料构成的结构,如:钢筋混凝土结构、钢结构,不能求解钢筋混凝土-钢组合结构。

采用了命令fscanf,其中:’%d’表示读入整数格式;1表示读取1个数。

%------------------------------------------------------------------------------------------

fprintf(FP2,'\n 结构初始数据\n\n');

fprintf(FP2,' 单元总数=%d 结点总数=%d 约束总数=%d \n',NELEM,NPOIN,NVFIX);

fprintf(FP2,' 结点荷载个数=%d 非结点荷载个数=%d 弹性模量=%12.5g \n',NFPOIN,NFPRES,YOUNG);

●说明:

在输出文件FP2中显示输入的控制信息,便于程序执行完毕后,从输出文件中查找输入错误。

采用了命令fprintf,其中:\n为换行标志,表示换一行;%12.5g表示输出12位且有5位小数的实数。

括在引号中的信息' 单元总数=%d 结点总数=%d 约束总数=%d \n'为输出到FP2文件中时的格式,其后的变量表NELEM,NPOIN,NVFIX依次将其代表的数值输出到%d所对应的位置。

%----------------------------------------------------------------------------------------------------- 4 调用读取初始数据函数,生成结构信息

[LNODS,COORD,FPOIN,FPRES,FIXED]=…

ele_INITIALDATA (FP1,FP2,NELEM,NPOIN,NFPOIN,NFPRES,NVFIX);

%----------------------------------------------------------------------------------------------------- 5 调用总刚计算函数,生成单刚并集成总刚

[HK] = ele_HK(NPOIN,NELEM,LNODS,COORD,YOUNG);

%----------------------------------------------------------------------------------------------------- 6调用荷载计算函数,由结点荷载与非结点荷载生成总荷载向量列阵[FORCE] = …

ele_FORCE(NPOIN,NFPOIN,FPOIN,NFPRES,FPRES,LNODS,COORD); %----------------------------------------------------------------------------------------------------- 7调用边界条件处理函数,总刚、总荷载进行边界条件处理

[HK,FORCE] = ele_BOUNDARY(NVFIX,FIXED,HK,FORCE);

%----------------------------------------------------------------------------------------------------- 8 方程求解

DISP=zeros(NPOIN,1); %建立并初始化结构的结点位移列矩阵

DISP=HK\FORCE; %计算出结构所有的结点位移

%----------------------------------------------------------------------------------------------------- 9调用单元杆端力计算函数,求单元杆端力

[FE] = ele_MOMENTS(FP2,NPOIN,DISP,NELEM,LNODS,…

COORD,YOUNG,NFPRES,FPRES);

%******************************************************************* 10 关闭输出数据文件

fclose(FP2);

%******************************************************************* % 读取初始数据函数ele_INITIALDATA

%******************************************************************* % 入口参数:FP1,FP2,NELEM,NPOIN,NFPOIN,NFPRES,NVFIX

% 出口参数:LNODS,COORD,FPOIN,FPRES,FIXED

%------------------------------------------------------------------------------------------ function [LNODS,COORD,FPOIN,FPRES,FIXED]=…

ele_INITIALDATA(FP1,FP2,NELEM,NPOIN,NFPOIN,NFPRES ,NVFIX)

说明:

FP1-文件句柄,指示输入数据文件;

FP2-文件句柄,指示输出数据文件;

%------------------------------------------------------------------------------------------

% 读取结构信息

LNODS=fscanf(FP1,'%f',[3,NELEM])';

●说明:

建立LNODS矩阵,该矩阵指出了每一单元的连接信息和惯性矩。

矩阵的每一行针对每一单元,共计NELEM;每一列相应为单元左结点号(编码)、(编码)、惯性矩。

命令中,[3,NELEM]表示读取NELEM行3列数据赋值给LNODS矩阵。

显然,LNODS(i,1:3)依次表示i单元的左结点号、右结点号、惯性矩。

从这种定义可见,每一单元的惯性矩均为常数,均为等截面直杆。

%------------------------------------------------------------------------------------------

fprintf(FP2,'单元号左结点号右结点号惯性矩\n');

for i=1:NELEM

fprintf(FP2,' %3d %3d %3d %10.2e \n',i,LNODS(i,:));

end

●说明:

在输出文件FP2中显示输入的单元连接等信息。

从1单元到NELEM单元进行循环,并依次输出每一单元的连接等信息。%---------------------------------------------------------------------------------------------------- COORD=fscanf(FP1,'%f',[NPOIN])'; % 坐标:x坐标(共计NPOIN 组)●说明:

建立COORD矩阵,该矩阵用来存储各结点x方向的坐标值。

连续梁结构各结点均分布在x轴,以1结点为起始点顺序编码,因此表征各结点位置时仅需存储其x方向的坐标即可。

从FP1文件中读取全部结点个数NPOIN的坐标值。

COORD(i)表示第i个结点的x坐标。

%------------------------------------------------------------------------------------------

fprintf(FP2,' 结点定义数据:结点号x 坐标\n');

for i=1:NPOIN

fprintf(FP2,' %3d %6.2f\n',i,COORD(i));

end

●说明:

在输出文件FP2中显示输入的结点坐标信息。

从1结点到NPOIN结点进行循环,并依次输出每一结点的坐标信息。

%----------------------------------------------------------------------------------------------------- FPOIN=fscanf(FP1,'%f',[2,NFPOIN])';

●说明:

建立FPOIN矩阵,该矩阵用来存储直接作用在结点上的荷载信息。

从FP1文件读取NFPOIN行2列数据,赋值给FPOIN矩阵。

每一行的第一列表示荷载作用的结点号;第二列表示荷载的数值大小。连续梁结构每一结点仅有1个转角位移,相应地直接作用在结点上的荷载为力偶,以顺时针转动为正。

FPOIN(i,1)表示第i个直接结点荷载作用的结点号,FPOIN(i,2)表示第i个直接结点荷载的数值大小。

若控制数据NFPOIN等于零,则此行命令不执行。

%------------------------------------------------------------------------------------------

if NFPOIN>0

fprintf(FP2,' 结点荷载数据:结点号M力偶\n');

for i=1:NFPOIN

fprintf(FP2,' %3d %3d %6.2f\n',i, FPOIN(i,:));

end

end

●说明:

首先判断控制数据NFPOIN是否为零,若为零则不需输出数据;若不为零,表明本算例有直接作用在结点上的荷载,需要在输出文件FP2中显示输入的结点荷载信息。

从第1到第NFPOIN个直接结点荷载进行循环,并依次输出每个直接结点荷载的顺序号、结点号和荷载大小。

%----------------------------------------------------------------------------------------------------- FPRES=fscanf(FP1,'%f',[3,NFPRES])';

●说明:

建立FPRES矩阵,该矩阵用来存储非结点荷载信息。

从FP1文件读取NFPRES行3列数据,赋值给FPRES矩阵。

每一行的第一列表示非结点荷载作用的单元号;第二列表示荷载类型;第三列表示荷载的数值大小。连续梁结构的局部坐标系x轴以向右为正、y轴以向上为正、转动方向以顺时针为正。

FPRES(i,1)表示第i个非结点荷载作用的单元号,FPRES(i,2)表示第i个非结点荷载的类型(类型定义在函数ele_FORCE中),FPRES(i,3)表示第i个非结点

荷载的数值大小。

若控制数据NFPRES等于零,则此行命令不执行。

%------------------------------------------------------------------------------------------

if NFPRES>0

fprintf(FP2,' 非结点荷载数据:荷载号单元号荷载类型荷载大小\n');

for i=1:NFPRES

fprintf(FP2,' %3d %3d %6.2f %6.2f\n',i,FPRES(i,:));

end

end

●说明:

首先判断控制数据NFPRES是否为零,若为零则不需输出数据;若不为零,表明本算例有非结点荷载,需要在输出文件FP2中显示输入的非结点荷载信息。

从第1到第NFPRES个非结点荷载进行循环,并依次输出每个非结点荷载作用的荷载序号、单元号、荷载类型和荷载大小。

%----------------------------------------------------------------------------------------------------- FIXED=fscanf(FP1,'%f',NVFIX)';

●说明:

建立FIXED矩阵,该矩阵用来存储零位移对应的位移编码信息(即有限制转动的约束使结点的转角位移为零,对应的结点位移编码。对于连续梁结构即固定支座对应的结点编码)。

从FP1文件读取NVFIX行数据,赋值给FIXED列矩阵。

每一行表示零位移对应的结点位移编码。

FIXED(i)表示第i个零位移对应的结点位移编码。

若控制数据NFPRES等于零,则此行命令不执行。

%----------------------------------------------------------------------------------------------- if NVFIX>0

fprintf(FP2,' 零位移约束数据:位移编号位移编号\n');

fprintf(FP2,' %3d %3d\n',FIXED(:));

end

●说明:

首先判断控制数据NVFIX是否为零,若为零则不需输出数据;若不为零,表明本算例有零位移,需要在输出文件FP2中显示零位移约束数据。

从第1到第NVFIX个零位移进行循环,依次输出每个零位移对应的结点号。%-----------------------------------------------------------------------------------------------------

return

●说明:

return表明主程序终止。

%******************************************************************* % 计算总刚矩阵函数ele_HK

%******************************************************************* % 入口参数:结点数、单元数、单元信息数组、结点坐标、弹性模量

% 出口参数:整体刚度矩阵

function [HK] = ele_HK(NPOIN,NELEM,LNODS,COORD,YOUNG)

%----------------------------------------------------------------------------------------------------- HK=zeros(NPOIN,NPOIN); % 生成总刚矩阵并清零

% 生成单刚并组成总刚

for i=1:NELEM % 对单元个数循环

% 调用生成局部单刚(局部坐标) 函数

EK=ele_EK(i,LNODS,COORD,YOUNG);

HK(i:i+1,i:i+1) = HK(i:i+1,i:i+1)+EK;

end

●说明:

对每一单元顺序循环,依次计算每一单元的局部单元刚度矩阵。EK为一个临时变量,计算得到i单元的单刚EK后,通过下一条语句集成入总刚矩阵中。在下一次循环中,则计算i+1单元的单刚,并赋值给EK,再进行集成。显然,随着循环的不断进行,EK对应着不同单元的单刚,值不断发生改变。

单刚到总刚的集成是利用了连续梁结构的特点,以分块的形式放入总刚矩阵中。例如:对于第i个单元,其四个单刚元素分别放入总刚矩阵的第(i,i)、(i,i+1)、(i+1,i)、(i+1,i+1)四个位置,因此通过HK的下标(i:i+1,i:i+1)来表示相应的元素位置。由于相邻单元的单刚集成时,有元素叠加的情况,因此相应的总刚矩阵元素的叠加采用了HK(i:i+1,i:i+1) = HK(i:i+1,i:i+1)+EK的表达形式。

%----------------------------------------------------------------------------------------------------- return

%******************************************************************* % 计算单元刚度矩阵函数ele_EK

%******************************************************************* % 入口参数:单元号、单元信息、结点坐标、弹性模量

% 出口参数:局部单元刚度矩阵

●说明:

在ele_HK函数中调用本函数时,弹性模量的入口参数符号为YOUNG,而在本函数的输入参数表中,符号为E。函数调用时可以采用此种用法。

%----------------------------------------------------------------------------------------------------- function EK=ele_EK(i,LNODS,COORD,E)

%----------------------------------------------------------------------------------------------------- NL=LNODS(i,1); %左结点号

NR=LNODS(i,2); %右结点号

L=COORD(NR)-COORD(NL); %单元长度

I=LNODS(i,3); %惯性矩

i=E*I/L;

●说明:

利用已知信息,计算每一单元的线刚度。

LNODS(i,1)为i单元左结点的结点号赋值给NL;LNODS(i,2)为i单元右结点的结点号赋值给NR。

COORD(NR)为第NR个结点的x坐标;COORD(NL)为第NL个结点的x坐标;二者的差为单元的长度。

LNODS(i,1)为i单元的惯性矩。

%---------------------------------------------------------------------------------------------- % 生成单刚(局部坐标) 右手坐标系

EK = [4*i 2*i;

2*i 4*i];

%---------------------------------------------------------------------------------------------- return

%******************************************************************* % 生成总荷载向量函数ele_FORCE

%******************************************************************* % 入口参数:结点数,结点荷载个数,结点荷载信息,非结点荷载个数,

非结点荷载信息,单元信息,结点坐标

% 出口参数:单元固端力—左右两端的杆端弯矩

function [FORCE] = ele_FORCE(NPOIN,NFPOIN,FPOIN,NFPRES,…

FPRES,LNODS,COORD)

%---------------------------------------------------------------------------------------------------- FORCE=zeros(NPOIN,1); % 生成总荷载向量并清零

for i=1:NFPOIN % 对结点荷载个数进行循环

FORCE(FPOIN(i,1))=FORCE(FPOIN(i,1))+FPOIN(i,2); % 取出结点荷载

end

●说明:

建立并初始化总荷载向量FORCE,其行数与总刚矩阵、总位移列矩阵相同,即与总结点数NPOIN相同(对于连续梁结构)。

对结点荷载个数进行循环,将每个结点荷载的数值放入所在结点号对应的总荷载向量FORCE对应的行处

FPOIN(i,1)为第i个结点荷载所作用的结点号;FPOIN(i,2) 为第i个结点荷载的大小;FORCE(FPOIN(i,1))为总荷向量对应结点号处的荷载。

%---------------------------------------------------------------------------------------------------- for i=1:NFPRES % 对非结点荷载个数进行循环

F0=ele_FPRES(i,FPRES,LNODS,COORD); % 计算单元固端力

% 对单元局部杆端力要进行坐标转换

ele=FPRES(i,1); % 取荷载所在的单元号

NL=LNODS(ele,1); NR=LNODS(ele,2); %单元的左右结点号

FORCE(NL)=FORCE(NL)-F0(1); %将固端力变成等效结点荷载

FORCE(NR)=FORCE(NR)-F0(2); %固端力与等效荷载符号相反end

●说明:

计算由非结点荷载引起的等效结点荷载,并集成入已有的总荷向量中。

对非结点荷载个数进行循环,即有几个非结点荷载循环几次,若没有非结点荷载,则本循环语句不执行。

调用计算非结点荷载引起的单元固端力函数,计算出非结点荷载所在单元的两端固端力。

FPRES(i,1)为第i个非结点荷载所在的单元号赋值给ele;LNODS(ele,1)为ele 单元左结点的结点号赋值给NL;LNODS(ele,2)为ele单元右结点的结点号赋值给NR。

FORCE(NL)、FORCE(NR)分别为单元的左、右杆端的杆端力;-F0(1)、-F0(2)为非结点荷载引起的左、右端固端力的负值,即等效结点荷载。

FORCE(NL)=FORCE(NL)-F0(1)为直接作用在单元左端结点上的荷载与左端等效结点荷载的叠加;FORCE(NR)=FORCE(NR)-F0(2) 为直接作用在单元右端

结点上的荷载与右端等效结点荷载的叠加。

%---------------------------------------------------------------------------------------------------- return

%******************************************************************* % 计算非结点荷载引起的单元固端力函数ele_FPRES

% 符号规定:正方向为:X向右Y向上M顺时针

%******************************************************************* % 入口参数:荷载序号,非结点荷载信息,单元信息,结点坐标

% 出口参数:单元固端力(左右两端固端弯矩)

%---------------------------------------------------------------------------------------------------- function F0=ele_FPRES(i,FPRES,LNODS,COORD)

%---------------------------------------------------------------------------------------------------- ele=FPRES(i,1); % 取荷载所在的单元号

G=FPRES(i,3); % 单元荷载大小

NL=LNODS(ele,1); NR=LNODS(ele,2); % 单元的左右结点号

L=COORD(NR)-COORD(NL); % 单元长度

说明:

将已知非结点荷载信息分别赋值给相应的变量。

FPRES(i,1)为第i个非结点荷载作用的单元号;G=FPRES(i,3)为第i个非结点荷载的大小;

LNODS(ele,1)为ele单元左结点的结点号赋值给NL;LNODS(ele,2)为ele单元右结点的结点号赋值给NR。

COORD(NR)为第NR个结点的x坐标;COORD(NL)为第NL个结点的x坐标;二者的差为单元的长度。

%---------------------------------------------------------------------------------------------------- F0=[0;0]; % 单元固端弯矩清零

switch FPRES(i,2)

case 1 % 横向均布荷载

F0(1)=-G*L^2/12.0;

F0(2)= G*L^2/12.0;

case 2 % 横向集中力

F0(1)=-G*L/8;

F0(2)= G*L/8;

end

●说明:

根据荷载类型,求解单元杆端的杆端弯矩。

FPRES(i,2)为第i个非结点荷载的类型。该类型是在下面的switch判断模块中定义的。当FPRES(i,2)=1时,为横向均布荷载(横向指垂直于杆件轴线);当FPRES(i,2)=2时,为横向集中力。即荷载类型分别为1、2,这两个数值需要在输入非结点荷载信息时针对荷载的类型进行输入。

每种非结点荷载作用下的单元固端力的计算公式是按照结构力学教材得到的。其中,F0(1)表示单元左端的固端弯矩;F0(2)表示单元右端的固端弯矩。

%---------------------------------------------------------------------------------------------------- return

%******************************************************************* % 总刚、总荷载进行边界条件处理函数ele_BOUNDARY

%******************************************************************* % 入口参数:零位移个数,约束信息,总刚矩阵,总荷载矩阵

% 出口参数:总刚矩阵,总荷载矩阵

%---------------------------------------------------------------------------------------------------- function [HK,FORCE] = ele_BOUNDARY(NVFIX,FIXED,HK,FORCE)

%---------------------------------------------------------------------------------------------------- for j=1:NVFIX % 对约束个数进行循环

N1=FIXED(j); %找出约束所在的结点位移编码

HK(N1,N1)=HK(N1,N1)*1E10; %乘大数法

end

●说明:

采用乘大数法处理边界条件,仅需对总刚元素进行处理即可。

FIXED(j)为第j个约束所在的结点位移编码(连续梁即结点号)赋值给N1。

对约束个数进行循环,对每j个约束处理时,需对总刚矩阵中的第j行第j

10。

列的主对角线元素HK(N1,N1)乘以一个大数,如10

%---------------------------------------------------------------------------------------------------- 若采用置0置1法处理边界条件,其相应程序为

for j=1:NVFIX

N1=FIXED(j); %找出约束所在的结点位移编码

HK(:,N1)=0; %将总刚矩阵HK(:,N1)的第N1列所有元素赋值为0。

HK(N1,:)=0; %将总刚矩阵HK(N1,:)的第N1行所有元素赋值为0。

HK(N1,N1)=1; %将总刚矩阵HK(N1,N1)主对角线元素赋值为1。

FORCE(N1)=0; %将总荷载矩阵FORCE(N1)的第N1行元素赋值为0 end

%---------------------------------------------------------------------------------------------------- return

%******************************************************************* % 计算单元杆端力函数ele_MOMENTS

%******************************************************************* % 入口参数:输出文件句柄,结点数,结构位移列阵,单元数,单元信息,结点坐标,弹性模量,非结点荷载个数,非结点荷载信息

% 出口参数:单元杆端力—左右两端的杆端弯矩

function [FE] = ele_MOMENTS(FP2,NPOIN,DISP,NELEM, LNODS,…

COORD, YOUNG, NFPRES, FPRES)

%---------------------------------------------------------------------------------------------------- fprintf(FP2,'\n 计算结果\n\n');

fprintf(FP2,' 输出结构结点位移结点号转角\n');

for i=1:NPOIN

fprintf(FP2,' %3d %11.3e \n',i,DISP(i));

end

●说明:

在输出文件FP2中显示提示信息:计算结果。

通过循环按照结点位移编码(连续梁结构即结点编码)的顺序,在文件FP2中输出所有结点位移的数值。

%---------------------------------------------------------------------------------------------------- EDISP=zeros(2,1); % 单元位移列向量清零

fprintf(FP2,' 输出单元杆端内力,以顺时针为正\n');

for i=1:NELEM % 对单元个数进行循环,依次计算每一单元的杆端力for j=1:2

N1=LNODS(i,j); % 单元杆端结点号

EDISP(j)=DISP(N1); % 取N1端的单元位移列向量

end

●说明:通过循环,依次从结构位移列阵中对号,赋值给第i个单元的

单元位移向量EDISP;

j=1时N1为左端,j=2时N1为右端。

%--------------------------------------------------------------------------------------

EK=ele_EK(i,LNODS,COORD,YOUNG); % 生成局部单刚(局部坐标)

FE=EK*EDISP; %计算局部坐标系下的由结点位移产生的杆端力

●说明:计算第i个单元的单刚EK;

由单刚乘以单元位移得到单元仅由结点位移产生的杆端力。

%--------------------------------------------------------------------------------------

for j=1:NFPRES

if FPRES(j,1) == i %成立时,当前单元上有非结点荷载

F0=ele_FPRES(j,FPRES,LNODS,COORD); %计算单元固端力

FE=FE+F0; %考虑由非结点荷载引起的杆端力,直接叠加end

end

●说明:对非结点个数进行循环。

FPRES(j,1)为第j个非结点荷载作用的单元号,若等于当前循环的单元号i,则表明当前单元上有非结点荷载。

调用计算单元固端力函数,得到非结点荷载引起的单元固端力。

将杆端位移引起的杆端力和非结点荷载引起的单元固端力叠加,得到当前单元的全部杆端力。

%------------------------------------------------------------------------------------------

fprintf(FP2,' 单元(%d)杆端力弯矩\n',i);

fprintf(FP2,' 左端%3d结点%7.2f\n',LNODS(i,1),FE(1));

fprintf(FP2,' 右端%3d结点%7.2f\n',LNODS(i,2),FE(2));

●说明:输出单元的结点号,对应的杆端弯矩。

end %对单元循环结束。

%---------------------------------------------------------------------------------------------------- return

3.2 程序应用举例

【例1】利用连续梁程序计算图2-9所示的连续梁结构。1

EI

= Array

图2-9

%----------------------------------------------------------------------------------------------------- 输入数据文件input.txt为:

3 4 1 1 2 1.0

1 2 1.0

2 3 1.0

3 4 1.0

0.0

6.0

12.0

17.0

2 6.0

1 2 -35.0

3 1 -6.0

4

%----------------------------------------------------------------------------------------------------- 说明:

第一行:读入程序控制信息

NELEM =fscanf(FP1,'%d',1); %单元个数(单元编码总数)

NPOIN =fscanf(FP1,'%d',1); %结点个数(结点编码总数)

NVFIX =fscanf(FP1,'%d',1); %约束个数(零位移总数)

NFPOIN=fscanf(FP1,'%d',1); %结点荷载个数(作用在结点上集中力偶总数)NFPRES=fscanf(FP1,'%d',1); %非结点荷载数(作用在单元上分布荷载总数)

YOUNG=fscanf(FP1,'%f',1); %弹性模量

第二、三四行:读入单元连接信息:

LNODS=fscanf(FP1,'%f',[3,NELEM])'; %单元号,左结点号,右结点号,惯性矩

第五、六、七、八行:读入结点坐标

COORD=fscanf(FP1,'%f',[NPOIN])'; %结点坐标值

第九行:读入结点荷载信息

FPOIN=fscanf(FP1,'%f',[2,NFPOIN])'; %结点号,结点荷载数值(以顺时针为正)

第十、十一行:读入非结点荷载信息

FPRES=fscanf(FP1,'%f',[3,NFPRES])'; %荷载号,单元号,荷载类型,荷载大小

%荷载类型:1为均布荷载,2为集中力

第十二行:读入零位移信息

FIXED=fscanf(FP1,'%f',NVFIX)'; %零位移约束所在的结点位移编码

%----------------------------------------------------------------------------------------------------- 输出数据文件output.txt

结构初始数据

单元总数=3 结点总数=4 约束总数=1

结点荷载个数=1 非结点荷载个数=2 弹性模量= 1

单元定义数据:单元号左结点号右结点号惯性矩

1 1

2 1.00e+000

2 2

3 1.00e+000

3 3

4 1.00e+000

结点定义数据:结点号x 坐标

1 0.00

2 6.00

3 12.00

4 17.00

结点荷载数据:结点号M力偶

1 2 6.00

非结点荷载数据:荷载号单元号荷载类型荷载大小

1 1 2.00 -35.00

2 3 1.00 -6.00

零位移约束数据:位移编号位移编号

4

计算结果

输出结构结点位移结点号转角

1 5.597e+001

2 -3.320e+001

3 1.607e+001

4 -2.366e-009

输出单元杆端弯矩(顺时针为正)

单元(1)杆端力弯矩

左端1结点0.00

右端2结点22.78

单元(2)杆端力弯矩

左端2结点-16.78

右端3结点-0.35

单元(3)杆端力弯矩

左端3结点0.35

右端4结点18.93

%----------------------------------------------------------------------------------------------------- 根据单元杆端力计算结果,可得结构的弯矩图为:

22.78

3.4 程序的改进要点

上述连续梁程序反映了矩阵位移法的基本思路,可以计算简单的连续梁问题。在熟练掌握了程序的编制与使用后,可在以下几方面对程序进行改进,以加

深对矩阵位移法及MATLAB语言编程的理解:

1、本程序的单元信息输入、结点坐标输入均分别隐含要求从1单元、1结点按编码的序号顺序输入,考虑如何改进使相关信息的输入可以更加灵活。

2、本程序的弹性模量仅能输入一个数值,意味着程序仅能计算由同种材料构成的结构。考虑如何改进使程序可计算由不同材料构成的组合结构。

3、本程序仅能计算两种非结点荷载类型,考虑如何编制跨中作用集中力偶、单元任意位置作用横向集中力、单元部分范围内作用均布荷载等类型的程序。

4、本程序的单元杆端力仅能计算杆端弯矩,考虑如何编制计算杆端剪力的程序

5、连续梁结构由于局部坐标系与整体坐标系相同,因此未涉及到坐标转换的问题,考虑如何编制坐标转换的程序。

6、连续梁结构由于每个结点仅有一个转角位移,所以程序中单刚、总刚、荷载矩阵等多处均采用结点号来替代结点位移号,进行下表索引和循环控制。但对于其他结构如平面刚架,每个结点一般有三个结点位移,则程序的编制过程中需要严格分清结点号和结点位移号。考虑如何编制平面刚架的计算程序。

综上所述,本章的连续梁程序体现了如何将矩阵位移法的计算方法和过程用MATLAB程序语言表达出来,重点放在程序架构和流程的建立以及算法实现方面,主要依赖手工操作-手工输入初始数据(前处理)、手工绘制计算结果(后处理),目的是使学生能够清晰、明确地掌握矩阵位移法的基本理论和概念,熟练掌握应用MATLAB语言编制、修改和调试简单程序的能力。

3.5 连续梁程序计算上机实习任务书

一、上机实习的主要内容

1、掌握连续梁计算程序输入的有关要求,应用程序进行连续梁结构的计算。

1)认真阅读连续梁计算程序的输入说明文件,进行例题的上机校验,理解并熟练

掌握程序的数据输入说明要求。

2)运用连续梁计算程序对所设计的习题进行计算。计算中,要针对每一习题的不

同要求改变相应的参数,研究参数改变对结构的影响。

3)对程序的计算结果进行分析,写出实习报告,实习报告要规范、详尽、言之有

据。

2、阅读并理解连续梁计算程序的编制思想和流程,画出程序框图,理解每一模块的功能及编程思想,然后根据自己的理解对其进行修改,使其更加完善。供参考的修改内容包括:

1)本程序的单元信息输入、结点坐标输入均分别隐含要求从1单元、1结点按编

码的序号顺序输入,考虑如何改进使相关信息的输入可以更加灵活。

2)本程序的弹性模量仅能输入一个数值,意味着程序仅能计算由同种材料构成的

结构。考虑如何改进使程序可计算由不同材料构成的组合结构。

3)本程序仅能计算两种非结点荷载类型,考虑如何编制跨中作用集中力偶、单元

任意位置作用横向集中力、单元部分范围内作用均布荷载等类型的程序。

4)本程序的单元杆端力仅能计算杆端弯矩,考虑如何编制计算杆端剪力的程序

二、上机实习的设计习题

设计多跨连续梁,通过改变下列参数,分析连续梁受力的特点:

1)改变各跨连续梁的跨度(L),探讨跨度变化对连续梁结构的受力特点;

2)改变各跨连续梁的弹性模量(E),探讨各跨采用不同材料时连续梁结构的受

力特点;

3)改变各跨连续梁的惯性矩(I),探讨各跨截面尺寸不同时连续梁结构的受力

特点;

4)改变各跨连续梁的抗弯刚度(EI),探讨各跨抗弯刚度不同时连续梁结构的

受力特点;

5)探讨跨中集中力、结点集中力偶和竖向均布荷载(如自重)的不同组合作用时

连续梁结构的受力特点;

6)改变结构的边界条件(铰支座或固定端),探讨不同边界条件时连续梁结构的

受力特点。

在以上设计中,结构的跨数、跨度、边界条件、弹性模量、惯性矩、荷载等参数均自行

设定,且应与实际工程结构相对应。当分析单一参数影响时,其他参数可取相同的设定,以利于分析单一参数对连续梁结构的影响规律。

总结以上不同要求对连续梁结构的受力影响,从而对连续梁结构的受力特点加深了解。

三、上机实习的要求

1、上机前,应在课下将每一习题的数据输入文件准备好。上机时,进行数据文件的输入、计算、修改、分析等工作,以利于节省时间。

2、上交的实习报告应包含下列内容:

1)数据输入文件及说明,包括结构单元编码、结点编码、坐标系设定、结构尺寸、

荷载等相关信息的计算简图;

2)计算结果文件及弯矩图;

3)详尽的分析;

4)总结的规律。

5)简明扼要地谈谈上机实习的体会。

MATLAB常用函数大全

一、MATLAB常用的基本数学函数 abs(x):纯量的绝对值或向量的长度 angle(z):复数z的相角(Phase angle) sqrt(x):开平方 real(z):复数z的实部 imag(z):复数z的虚部 conj(z):复数z的共轭复数 round(x):四舍五入至最近整数 fix(x):无论正负,舍去小数至最近整数 floor(x):地板函数,即舍去正小数至最近整数ceil(x):天花板函数,即加入正小数至最近整数rat(x):将实数x化为分数表示 rats(x):将实数x化为多项分数展开 sign(x):符号函数 (Signum function)。 当x<0时,sign(x)=-1; 当x=0时,sign(x)=0; 当x>0时,sign(x)=1。 rem(x,y):求x除以y的馀数 gcd(x,y):整数x和y的最大公因数 lcm(x,y):整数x和y的最小公倍数 exp(x):自然指数 pow2(x):2的指数 log(x):以e为底的对数,即自然对数或 log2(x):以2为底的对数 log10(x):以10为底的对数 二、MATLAB常用的三角函数 sin(x):正弦函数 cos(x):余弦函数

tan(x):正切函数 asin(x):反正弦函数 acos(x):反馀弦函数 atan(x):反正切函数 atan2(x,y):四象限的反正切函数 sinh(x):超越正弦函数 cosh(x):超越馀弦函数 tanh(x):超越正切函数 asinh(x):反超越正弦函数 acosh(x):反超越馀弦函数 atanh(x):反超越正切函数 三、适用於向量的常用函数有: min(x): 向量x的元素的最小值 max(x): 向量x的元素的最大值 mean(x): 向量x的元素的平均值 median(x): 向量x的元素的中位数 std(x): 向量x的元素的标准差 diff(x): 向量x的相邻元素的差 sort(x): 对向量x的元素进行排序(Sorting)length(x): 向量x的元素个数 norm(x): 向量x的欧氏(Euclidean)长度sum(x): 向量x的元素总和 prod(x): 向量x的元素总乘积 cumsum(x): 向量x的累计元素总和 cumprod(x): 向量x的累计元素总乘积 dot(x, y): 向量x和y的内积 cross(x, y): 向量x和y的外积 四、MATLAB的永久常数

matlab 常用函数汇总

matlab 常用函数汇总 编程2008-07-10 21:45:20 阅读46 评论0 字号:大中小订阅matlab常用函数 图形注释 Title 图形标题 Xlabel X轴标记 Ylabel Y轴标记 Text 文本注释 Gtext 用鼠标放置文本 Grid 网格线 MATLAB编程语言 Function 增加新的函数 Eval 执行由MA TLAB表达式构成的字串 Feval 执行由字串指定的函数 Global 定义全局变量 程序控制流 If 条件执行语句 Else 与if命令配合使用 Elseif 与if命令配合使用 End For,while和if语句的结束 For 重复执行指定次数(循环) While 重复执行不定次数(循环) Break 终止循环的执行 Return 返回引用的函数 Error 显示信息并终止函数的执行 交互输入 Input 提示用户输入 Keyboard 像底稿文件一样使用键盘输入 Menu 产生由用户输入选择的菜单 Pause 等待用户响应 Uimenu 建立用户界面菜单 Uicontrol 建立用户界面控制 一般字符串函数 Strings MATLAB中有关字符串函数的说明 Abs 变字符串为数值 Setstr 变数值为字符串 Isstr 当变量为字符串时其值为真 Blanks 空串 Deblank 删除尾部的空串 Str2mat 从各个字符串中形成文本矩阵 Eval 执行由MA TLAB表达式组成的串 字符串比较 Strcmp , , , 比较字符串 Findstr 在一字符串中查找另一个子串

Upper 变字符串为大写 Lower 变字符串为小写 Isletter 当变量为字母时,其值为真 Isspace 当变量为空白字符时,其值为真 字符串与数值之间变换 Num2str 变数值为字符串 Int2str 变整数为字符串 Str2num 变字符串为数值 Sprintf 变数值为格式控制下的字符串 Sscanf 变字符串为格式控制下的数值 十进制与十六进制数之间变换 Hex2num 变十六进制为IEEE标准下的浮点数Hex2dec 变十六制数为十进制数 Dec2hex 变十进制数为十六进制数 建模 Append 追加系统动态特性 Augstate 变量状态作为输出 Blkbuild 从方框图中构造状态空间系统Cloop 系统的闭环 Connect 方框图建模 Conv 两个多项式的卷积 Destim 从增益矩阵中形成离散状态估计器Dreg 从增益矩阵中形成离散控制器和估计器Drmodel 产生随机离散模型 Estim 从增益矩阵中形成连续状态估计器Feedback 反馈系统连接 Ord2 产生二阶系统的A、B、C、D Pade 时延的Pade近似 Parallel 并行系统连接 Reg 从增益矩阵中形成连续控制器和估计器Rmodel 产生随机连续模型 Series 串行系统连接 Ssdelete 从模型中删除输入、输出或状态ssselect 从大系统中选择子系统 模型变换 C2d 变连续系统为离散系统 C2dm 利用指定方法变连续为离散系统 C2dt 带一延时变连续为离散系统 D2c 变离散为连续系统 D2cm 利用指定方法变离散为连续系统 Poly 变根值表示为多项式表示 Residue 部分分式展开 Ss2tf 变状态空间表示为传递函数表示 Ss2zp 变状态空间表示为零极点表示

MATLAB常用指令

MATLAB常用指令 1.常用命令-->管理命令和函数 addpath 添加目录到MATLAB搜索路径 doc 在Web浏览器上现实HTML文档 help 显示Matlab命令和M文件的在线帮助 helpwin helpdesk help lookfor 在基于Matlab搜索路径的所有M文件中搜索关键字partialpath 部分路径名 path 所有关于路径名的处理 pathtool 一个不错的窗口路径处理界面 rmpath 删除搜索路径中指定目录 type 显示指定文件的内容 ver 版本信息 version 版本号 web 打开web页 what 列出当前目录吓所有的M文件Mat文件和Mex文件whatsnew 显示readme文件 which 显示文件位置 (返回) 2.常用命令-->管理变量和工作区(输入输出、内存管理等) clear 从内存中删除 disp 显示文本或数组内容 length 数组长度(最长维数) load 重新载入变量(从磁盘上) mlock 锁定文件,防止文件被错误删除 munlock 解锁文件 openvar 在数组编辑器中打开变量 pack 整理内存空间 save 保存变量到文件8*) size 数组维数 who 列出内存变量 whos 列出内存变量,同时显示变量维数 workspace 显示工作空间窗口 (返回) 3.常用命令-->管理命令控制窗口(command窗口) clc 清空命令窗口 echo 禁止或允许显示执行过程 format 设置输出显示格式 home 光标移动到命令窗口左上角 more 设置命令窗口页输出格式 (返回)

matlab循环语句

matlab 基本语句 1.循环语句for for i=s1:s3:s2 循环语句组 end 解释:首先给i赋值s1;然后,判断i是否介于s1与s2之间;如果是,则执行循环语句组,i=i+s3(否则,退出循环.);执行完毕后,继续下一次循环。 例:求1到100的和,可以编程如下: sum=0 for i=1:1:100 sum=sum+i end 这个程序也可以用while语句编程。 注:for循环可以通过break语句结束整个for循环. 2.循环语句while 例:sum=0;i=1; while(i<=100) sum=sum+i;i=i+1; end 3.if语句 if(条件) 语句 end if(条件) 语句 else 语句 end if(条件) 语句 elseif 语句 end 4.关系表达式:

=,>,<,>=,<=,==(精确等于) 5.逻辑表达式:|(或),&(且) 6.[n,m]=size(A)(A为矩阵) 这样可以得到矩阵A的行和列数 n=length(A),可以得到向量A的分量个数;如果是矩阵,则得到矩阵A的行与列数这两个数字中的最大值。 7.!后面接Dos命令可以调用运行一个dos程序。 8.常见函数: poly():为求矩阵的特征多项式的函数,得到的为特征多项式的各个系数。如 a=[1,0,0;0,2,0;0,0,3],则poly(a)=1 -6 11 -6。相当于poly(a)=1入^3+(-6)入^2+11入+(-6)。 compan():可以求矩阵的伴随矩阵. sin()等三角函数。 MATLAB在数学建模中的应用(3) 一、程序设计概述 MATLAB所提供的程序设计语言是一种被称为第四代编程语言的高级程序设计语言,其程序简洁,可读性很强,容易调试。同时,MATLAB的编程效率比C/C++语言要高得多。 MATLAB编程环境有很多。常用的有: 1.命令窗口 2.word窗口 3.M-文件编辑器,这是最好的编程环境。 M-文件的扩展名为“.m”。M-文件的格式分为两种: ①λ M-脚本文件,也可称为“命令文件”。 ② M-函数文件。这是matlab程序设计的主流。λ 保存后的文件可以随时调用。 二、MATLAB程序结构 按照现代程序设计的观点,任何算法功能都可以通过三种基本程序结构来实现,这三种结构是:顺序结构、选择结构和循环结构。其中顺序结构是最基本的结构,它依照语句的自然顺序逐条地执行程序的各条语句。如果要根据输入数据的实际情况进行逻辑判断,对不同的结果进行不同的处理,可以使用选择结构。如果需要反复执行某些程序段落,可以使用循环结构。 1 顺序结构 顺序结构是由两个程序模块串接构成。一个程序模块是完成一项独立功能的逻辑单元,它可以是一段程序、一个函数,或者是一条语句。 看图可知,在顺序结构中,这两个程序模块是顺序执行的,即先执行<程序

matlab中循环语句用法

循环结构:for语句 格式: for 循环变量=表达式1:表达式2:表达式3 循环体 end 【注】:表达式1:循环变量初值, 表达式2:步长,为1时,可省略; 表达式3:循环变量终值。 或: for循环变量=矩阵表达式 循环体 end 【注】:执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完毕。 2 while语句: 格式: while(条件) 循环体 end 【注】:条件成立时,执行循环体 3

break语句&& continue语句: break:破坏,破坏循环,终止循环的进行,跳出循环,程序将执行循环语句的下一语句。 continue:继续,循环继续,程序将跳过循环体中剩下的语句,继续下一次循环。 4 循环的嵌套—多重循环结构 5 选择结构:if-else语句 格式: if 表达式 程序模块 end 或 if 表达式 程序模块1 else 程序模块2 end 6 switch语句: 格式:

switch 表达式 case 数值1 程序模块1 case 数值2 程序模块2 case 数值3 程序模块3 ...... otherwise 程序模块n end 执行过程:首先计算表达式的值, 然后将其结果与每一个case后面的数值依次进行比较, 如果相等,则执行该case的程序模块; 如果都不相等,则执行otherwise模块中的语句。 switch语句可以替代多分支的if语句,而且switch语句简洁明了,可读性更好。 7 matlab中一些基本知识: END 注意事项 for循环可以通过break语句结束整个for循环

Matlab常用函数及指令大全

Matlab常用函数及指令介绍 A a abs 绝对值、模、字符的ASCII 码值 acos 反余弦 acosh 反双曲余弦 acot 反余切 acoth 反双曲余切 acsc 反余割 acsch 反双曲余割 align 启动图形对象几何位置排列工具 all 所有元素非零为真angle 相角 ans 表达式计算结果的缺省变量名 any 所有元素非全零为真area 面域图 argnames 函数M 文件宗量名 asec 反正割 asech 反双曲正割 asin 反正弦 asinh 反双曲正弦assignin 向变量赋值 atan 反正切 atan2 四象限反正切 atanh 反双曲正切 autumn 红黄调秋色图阵axes 创建轴对象的低层指令 axis 控制轴刻度和风格的高层指令 B b bar 二维直方图 bar3 三维直方图 bar3h 三维水平直方图barh 二维水平直方图base2dec X 进制转换为十进制 bin2dec 二进制转换为十进制 blanks 创建空格串bone 蓝色调黑白色图阵 box 框状坐标轴 break while 或for 环中断 指令 brighten 亮度控制 C c capture (3 版以前)捕获 当前图形 cart2pol 直角坐标变为极或 柱坐标 cart2sph 直角坐标变为球 坐标 cat 串接成高维数组 caxis 色标尺刻度 cd 指定当前目录 cdedit 启动用户菜单、控件 回调函数设计工具 cdf2rdf 复数特征值对角阵 转为实数块对角阵 ceil 向正无穷取整 cell 创建元胞数组 cell2struct 元胞数组转换为 构架数组 celldisp 显示元胞数组内容 cellplot 元胞数组内部结构 图示 char 把数值、符号、内联类 转换为字符对象 chi2cdf 分布累计概率函数 chi2inv 分布逆累计概率函 数 chi2pdf 分布概率密度函数 chi2rnd 分布随机数发生器 chol Cholesky 分解 clabel 等位线标识 cla 清除当前轴 class 获知对象类别或创建 对象 clc 清除指令窗 clear 清除内存变量和函数 clf 清除图对象 clock 时钟 colorcube 三浓淡多彩交叉 色图矩阵 colordef 设置色彩缺省值 colormap 色图 colspace 列空间的基 close 关闭指定窗口 colperm 列排序置换向量 comet 彗星状轨迹图 comet3 三维彗星轨迹图 compass 射线图 compose 求复合函数 cond (逆)条件数 condeig 计算特征值、特征 向量同时给出条件数 condest 范–1 条件数估计 conj 复数共轭 contour 等位线 contourf 填色等位线 contour3 三维等位线 contourslice 四维切片等位 线图 conv 多项式乘、卷积 cool 青紫调冷色图 copper 古铜调色图 cos 余弦 cosh 双曲余弦 cot 余切 coth 双曲余切 cplxpair 复数共轭成对排列 csc 余割 csch 双曲余割 cumsum 元素累计和 cumtrapz 累计梯形积分 cylinder 创建圆柱 D d dblquad 二重数值积分 deal 分配宗量 deblank 删去串尾部的空格 符 dec2base 十进制转换为X 进制 dec2bin 十进制转换为二进

matlab中循环语句用法

while语法: while expression statements end 说明:while expression, statements, end 计算一个表达式,并在该表达式为true 时在一个循环中重复执行一组语句。表达式的结果非空并且仅包含非零元素(逻辑值或实数值)时,该表达式为true。否则,表达式为false。 示例代码如下: function [sum] = summation(ratio, head, top) sum = 0; while (head <= top) sum = sum + ratio ^ head; head = head + 1; end end

假设ratio = 2,head = 0,top = 63 matlab循环语句for怎么用? matlab中for语句使用方法和应用实例 for循环语句 1、一般格式为: for x(循环变量)= array(数组) commands(执行的循环代码) end 2、array可以是一个数字,也可以是数组,例如输入:for a=5 for a=1:5 for a=1:1:5(以1为步长到5)

只不过在a=1:5和a=1:1:5时,会显示之间的结果,a=5时只显示最后结果。a的变动就是第一次循环a=1,第二次循环a=2,第三次循环a=3,第四次循环a=4,第五次循环a=5。 3、(commands)就是命令,其中的命令行可以很多很多,最常见的就是调用上面说的a变动比如: for a=10 %循环10次 s=a+1 %循环语句 end %结束 上面的a不需要再指定,a的变化就是上面说的先是1,然后是2,3,…那么s就是先s=1+1=2,然后再s=2+1=3,s=3+1=4,…,s=10+1=11,循环结束,就是一个连续加s的指令,最后=11。 4、for语句可以嵌套的,和C一样 for a=5 %第一个for循环

MATLAB常用命令检索大全

MATLAB命令 MATLAB COMMANDS AND FUNCTIONS LIST A A ABS 绝对值、模、字符的ASCII码值 ACOS 反余弦 ACOSH 反双曲余弦 ACOT 反余切 ACOTH 反双曲余切 ACSC 反余割 ACSCH 反双曲余割 ALIGN 启动图形对象几何位置排列工具 ALL 所有元素非零为真 ANGLE 相角 ANS 表达式计算结果的缺省变量名 ANY 所有元素非全零为真 AREA 面域图 ARGNAMES 函数M文件宗量名 ASEC 反正割 ASECH 反双曲正割 ASIN 反正弦 ASINH 反双曲正弦 ASSIGNIN 向变量赋值 ATAN 反正切 ATAN2 四象限反正切 ATANH 反双曲正切 AUTUMN 红黄调秋色图阵 AXES 创建轴对象的低层指令 AXIS 控制轴刻度和风格的高层指令 B B BAR 二维直方图 BAR3 三维直方图 BAR3H 三维水平直方图 BARH 二维水平直方图 BASE2DEC X进制转换为十进制 BIN2DEC 二进制转换为十进制 BLANKS 创建空格串 BONE 蓝色调黑白色图阵 BOX 框状坐标轴 BREAK WHILE 或FOR 环中断指令

BRIGHTEN 亮度控制 C C CAPTURE (3版以前)捕获当前图形 CART2POL 直角坐标变为极或柱坐标 CART2SPH 直角坐标变为球坐标 CAT 串接成高维数组 CAXIS 色标尺刻度 CD 指定当前目录 CDEDIT 启动用户菜单、控件回调函数设计工具CDF2RDF 复数特征值对角阵转为实数块对角阵CEIL 向正无穷取整 CELL 创建元胞数组 CELL2STRUCT 元胞数组转换为构架数组CELLDISP 显示元胞数组内容 CELLPLOT 元胞数组内部结构图示 CHAR 把数值、符号、内联类转换为字符对象CHI2CDF 分布累计概率函数 CHI2INV 分布逆累计概率函数 CHI2PDF 分布概率密度函数 CHI2RND 分布随机数发生器 CHOL CHOLESKY分解 CLABEL 等位线标识 CLA 清除当前轴 CLASS 获知对象类别或创建对象 CLC 清除指令窗 CLEAR 清除内存变量和函数 CLF 清除图对象 CLOCK 时钟 COLORCUBE 三浓淡多彩交叉色图矩阵COLORDEF 设置色彩缺省值 COLORMAP 色图 COLSPACE 列空间的基 CLOSE 关闭指定窗口 COLPERM 列排序置换向量 COMET 彗星状轨迹图 COMET3 三维彗星轨迹图 COMPASS 射线图 COMPOSE 求复合函数 COND (逆)条件数 CONDEIG 计算特征值、特征向量同时给出条件数CONDEST 范-1条件数估计

Matlab for 循环

for 循环语句 for语句作用是按照预先设定的循环步骤重复执行某语句段, 其语法: for循环控制变量=存储着该变量依次所取值的一个向量 循环语句块, 本块重复执行的次数由上方向量的长度决定, 每次执行, 循环控制变量依次取该向量中的值. end 注意, 如果你matlab的for 循环语句有其独有的特点, 它使用一个向量来控制循环, 循环次数由向量的长度来决定, 而每次循环都依次从向量中取值. 这使得Matlab循环更灵活多样, 其循环变量取值可以不按照特定的规律; 但是另一方面, Matlab 的for循环也有独特的限制, 当次循环中改变循环变量赋值, 不会代入下次循环, 所以除非在其中用break提前退出, Matlab循环的次数是预先定好的. 举个例子: for a=1:2:7 , 将循环4次, a的取值依次是1, 3, 5, 7. 另一个例子: for a=[1, 5, 3, 4, 6], 这个循环将被执行5次, 循环控制变量a的取值依次为: 1, 5, 3, 4, 6. 如果还对for循环这个特性不太熟悉, 试试下面这段Matlab代码: for a=[1 5 3 4 6] disp(['第', num2str(find(a==[1 5 3 4 6])) , '次循环, a的取值为: ',num2str(a)] ); end While循环 与for循环不同, while循环不预先指定好循环次数, 只要符合条件循环就一直执行下去, while语句的语法: while判断条件 循环语句块 end 此处的'判断条件'和if语句中的那个一样, 要求这个变量或者表达式最终得到一个逻辑型标量, 每次循环之前, while语句会判断这个条件是否满足, 如果满足则开始循环模块, 否则跳过整个循环语句. 在循环语句块中控制循环退出有两种办法, 其一是直接或间接地改变'判断条件'的值, 使之为'false', 其二是在循环块中执行'break' 语句直接退出循环. 一个例子, 每次循环变量a都将增加1, 我们欲控制使a大于10时终止循环, 下面分别采用上述提到的两种方法控制循环. approach 1 a=0; while a<=10 a=a+1; disp(a); end approach 2: a=0; while 1 %由于判断条件是'1', 永远为'true', 所以如果不在循环块中设置跳出条件,循环将永久性进行下去! a=a+1; disp(a); if a>=10 break; end

matlab命令大全

matlab命令 一、常用对象操作:除了一般windows窗口的常用功能键外。 1、!dir 可以查看当前工作目录的文件。 !dir& 可以在dos状态下查看。 2、who 可以查看当前工作空间变量名,whos 可以查看变量名细节。 3、功能键: 功能键快捷键说明 方向上键 Ctrl+P 返回前一行输入 方向下键 Ctrl+N 返回下一行输入 方向左键 Ctrl+B 光标向后移一个字符 方向右键 Ctrl+F 光标向前移一个字符 Ctrl+方向右键 Ctrl+R 光标向右移一个字符 Ctrl+方向左键 Ctrl+L 光标向左移一个字符 home Ctrl+A 光标移到行首 End Ctrl+E 光标移到行尾 Esc Ctrl+U 清除一行 Del Ctrl+D 清除光标所在的字符 Backspace Ctrl+H 删除光标前一个字符 Ctrl+K 删除到行尾 Ctrl+C 中断正在执行的命令 4、clc可以命令窗口显示的内容,但并不清除工作空间。 二、函数及运算 1、运算符: +:加,-:减, *:乘, /:除,\:左除 ^:幂,‘:复数的共轭转置,():制定运算顺序。 2、常用函数表: sin( ) 正弦(变量为弧度) Cot( ) 余切(变量为弧度) sind( ) 正弦(变量为度数) Cotd( ) 余切(变量为度数) asin( ) 反正弦(返回弧度) acot( ) 反余切(返回弧度) Asind( ) 反正弦(返回度数) acotd( ) 反余切(返回度数) cos( ) 余弦(变量为弧度) exp( ) 指数 cosd( ) 余弦(变量为度数) log( ) 对数 acos( ) 余正弦(返回弧度) log10( ) 以10为底对数 acosd( ) 余正弦(返回度数) sqrt( ) 开方

挺好的——matlab循环语句

Matlab 基本语句 1.循环语句for for i=s1:s3:s2 循环语句组 end 解释:首先给i赋值s1;然后,判断i是否介于s1与s2之间;如果是,则执行循环语句组,i=i+s3(否则,退出循环.);执行完毕后,继续下一次循环。 例:求1到100的和,可以编程如下: sum=0 for i=1:1:100 sum=sum+i end 这个程序也可以用while语句编程。 注:for循环可以通过break语句结束整个for循环. 2.循环语句while 例:sum=0;i=1; while(i<=100) sum=sum+i;i=i+1; end 3.if语句 if(条件) 语句 end if(条件) 语句 else 语句 end if(条件) 语句 elseif 语句 end 4.关系表达式:

=,>,<,>=,<=,==(精确等于) 5.逻辑表达式:|(或),&(且) 6.[n,m]=size(A)(A为矩阵) 这样可以得到矩阵A的行和列数 n=length(A),可以得到向量A的分量个数;如果是矩阵,则得到矩阵A的行与列数这两个数字中的最大值。 7.!后面接Dos命令可以调用运行一个dos程序。 8.常见函数: poly():为求矩阵的特征多项式的函数,得到的为特征多项式的各个系数。如 a=[1,0,0;0,2,0;0,0,3],则poly(a)=1 -6 11 -6。相当于poly(a)=1入^3+(-6)入^2+11入+(-6)。 compan():可以求矩阵的伴随矩阵. sin()等三角函数。 MATLAB在数学建模中的应用(3) 一、程序设计概述 MATLAB所提供的程序设计语言是一种被称为第四代编程语言的高级程序设计语言,其程序简洁,可读性很强,容易调试。同时,MATLAB的编程效率比C/C++语言要高得多。 MATLAB编程环境有很多。常用的有: 1.命令窗口 2.word窗口 3.M-文件编辑器,这是最好的编程环境。 M-文件的扩展名为“.m”。M-文件的格式分为两种: ①λ M-脚本文件,也可称为“命令文件”。 ② M-函数文件。这是matlab程序设计的主流。λ 保存后的文件可以随时调用。 二、MATLAB程序结构 按照现代程序设计的观点,任何算法功能都可以通过三种基本程序结构来实现,这三种结构是:顺序结构、选择结构和循环结构。其中顺序结构是最基本的结构,它依照语句的自然顺序逐条地执行程序的各条语句。如果要根据输入数据的实际情况进行逻辑判断,对不同的结果进行不同的处理,可以使用选择结构。如果需要反复执行某些程序段落,可以使用循环结构。 1 顺序结构 顺序结构是由两个程序模块串接构成。一个程序模块是完成一项独立功能的逻辑单元,它可以是一段程序、一个函数,或者是一条语句。 看图可知,在顺序结构中,这两个程序模块是顺序执行的,即先执行<程序

Matlab命令大全

Matlab命令大全

Matlab命令汇总 一、常用对象操作:除了一般windows窗口的常用功能键外。 1、!dir 可以查看当前工作目录的文件。 !dir& 可以在dos状态下查看。 2、who 可以查看当前工作空间变量名, whos 可以查看变量名细节。 3、功能键: 功能键快捷键说明 方向上键 Ctrl+P 返回前一行输入 方向下键 Ctrl+N 返回下一行输入 方向左键 Ctrl+B 光标向后移一个字符 方向右键 Ctrl+F 光标向前移一个字符 Ctrl+方向右键 Ctrl+R 光标向右移一个字符 Ctrl+方向左键 Ctrl+L 光标向左移一个字符 home Ctrl+A 光标移到行首 End Ctrl+E 光标移到行尾 Esc Ctrl+U 清除一行 Del Ctrl+D 清除光标所在的字符 Backspace Ctrl+H 删除光标前一个字符 Ctrl+K 删除到行尾 Ctrl+C 中断正在执行的命令 4、clc可以命令窗口显示的内容,但并不清除工作空间。 二、函数及运算 1、运算符:+:加;-:减; *:乘; /:除; \:左除 ^:幂; ‘:复数的共轭转置;():制定运算顺序。 2、常用函数表:sin( ) 正弦(变量为弧度) Cot( ) 余切(变量为弧度) sind( ) 正弦(变量为度数) Cotd( ) 余切(变量为度数) asin( ) 反正弦(返回弧度) acot( ) 反余切(返回弧度) Asind( ) 反正弦(返回度数) acotd( ) 反余切(返回度数) cos( ) 余弦(变量为弧度) exp( ) 指数 cosd( ) 余弦(变量为度数) log( ) 对数 acos( ) 余正弦(返回弧度) log10( ) 以10为底对数 acosd( ) 余正弦(返回度数) sqrt( ) 开方 tan( ) 正切(变量为弧度) realsqrt( ) 返回非负根 tand( ) 正切(变量为度数) abs( ) 取绝对值

MATLAB For 循环

MATLAB For 循环 计算机编程语言和可编程计算器提供许多功能,它允许你根据决策结构控制命令执行流程。如果你以前已经使用过这些功能,对此就会很熟悉。相反,如果不熟悉控制流,本章材料初看起来或许复杂些。如果这样,就慢慢来。 控制流极其重要,因为它使过去的计算影响将来的运算。MATLAB提供三种决策或控制流结构。它们是:For循环,While循环和If-Else-End结构。由于这些结构经常包含大量的MATLAB命令,故经常出现在M文件中,而不是直接加在MATLAB提示符下。 7.1 For循环 For循环允许一组命令以固定的和预定的次数重复。For循环的一般形式是: for x = array {commands} end 在for和end语句之间的{commands}按数组中的每一列执行一次。在每一次迭代中,x被指定为数组的下一列,即在第n次循环中,x=array(:, n)。例如, ? for n=1:10 x(n)=sin(n*pi/10); end ? x x = Columns 1 through 7 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 Columns 8 through 10 0.5878 0.3090 0.0000 换句话,第一语句是说:对n等于1到10,求所有语句的值,直至下一个end语句。第一次通过For循环n=1,第二次,n=2,如此继续,直至n=10。在n=10以后,For循环结束,然后求end语句后面的任何命令值,在这种情况下显示所计算的x的元素。 For循环的其它重要方面是: 1. For循环不能用For循环内重新赋值循环变量n来终止。 ? for n=1:10 x(n)=sin(n*pi/10); n=10; end ? x x = Columns 1 through 7

完整word版,matlab各种函数大全

MATLAB函数表 管理命令和函数 help 在线帮助文件 doc 装入超文本说明 what M、MAT、MEX文件的目录列表type 列出M文件 lookfor 通过help条目搜索关键字which 定位函数和文件 Demo 运行演示程序 Path 控制MATLAB的搜索路径管理变量和工作空间 Who 列出当前变量 Whos 列出当前变量(长表) Load 从磁盘文件中恢复变量 Save 保存工作空间变量 Clear 从内存中清除变量和函数 Pack 整理工作空间内存 Size 矩阵的尺寸 Length 向量的长度 disp 显示矩阵或 与文件和操作系统有关的命令 cd 改变当前工作目录 Dir 目录列表 Delete 删除文件 Getenv 获取环境变量值 ! 执行DOS操作系统命令 Unix 执行UNIX操作系统命令并返回Diary 保存MATLAB任务 控制命令窗口 Cedit 设置命令行编辑 Clc 清命令窗口 Home 光标置左上角 Format 设置输出格式 Echo 底稿文件内使用的回显命令 more 在命令窗口中控制分页输出启动和退出MATLAB Quit 退出MATLAB Startup 引用MATLAB时所执行的M文件Matlabrc 主启动M文件 一般信息 Info MATLAB系统信息及Mathworks公Subscribe 成为MATLAB的订购用户hostid MATLAB主服务程序的识别代号Whatsnew 在说明书中未包含的新信息Ver 版本信息 操作符和特殊字符 + 加 —减 * 矩阵乘法 .* 数组乘法 ^ 矩阵幂 .^ 数组幂 \ 左除或反斜杠 / 右除或斜杠 ./ 数组除 Kron Kronecker张量积 : 冒号 ( ) 圆括号 [ ] 方括号 . 小数点 .. 父目录 …继续 , 逗号 ; 分号 % 注释 ! 感叹号 ‘转置或引用 = 赋值 = = 相等 < > 关系操作符 & 逻辑与 | 逻辑或 ~ 逻辑非 xor 逻辑异或 逻辑函数 Exist 检查变量或函数是否存在Any 向量的任一元为真,则其值为真All 向量的所有元为真,则其值为真Find 找出非零元素的索引号 三角函数 Sin 正弦 Sinh 双曲正弦 Asin 反正弦 Asinh 反双曲正弦 Cos 余弦 Cosh 双曲余弦 Acos 反余弦 Acosh 反双曲余弦 Tan 正切 Tanh 双曲正切 Atan 反正切 Atan2 四象限反正切

matlab常用基本命令

有关命令行环境的一些操作: (1) clc擦去一页命令窗口,光标回屏幕左上角 (2) clear从工作空间清除所有变量 (3) clf清除图形窗口内容 (4) who列出当前工作空间中的变量 (5) whos列出当前工作空间中的变量及信息?(6) delete <文件名> (7) which <文件名> (9) clear all (10) help <命令名> (11) save name (12) save name x y (13) load name (14) load name x y (15) diary name1.m (16) type name.m (17) what 快捷键: Ctrl+p Ctrl+n Ctrl+b Ctrl+f

Ctrl + ← Ctrl+r Ctrl + → Ctrl+l Home Ctrl+a End Ctrl+e Esc Ctrl+u Del Ctrl+d 或用工具栏上的Workspace 浏览器从磁盘删除指定文件 查找指定文件的路径 从工作空间清除所有变量和函数 查询所列命令的帮助信息 保存工作空间变量到文件name.mat 保存工作空间变量x y到文件name.mat 下载‘name’文件中的所有变量到工作空间 下载‘name’文件中的变量x y到工作空间 保存工作空间一段文本到文件name1.m 在工作空间查看name.m文件内容 列出当前目录下的m文件和mat文件 调用上一次的命令 调用下一行的命令 退后一格 前移一格

向右移一个单词 向xx一个单词 光标移到行首 光标移到行尾 清除一行 清除光标后字符 Backspace Ctrl+h 清除光标前字符Ctrl+k 清除光标至行尾字Ctrl+c 中断程序运行一.常用的窗口命令 help 启动联机帮助文件显示 what 列出当前目录下的有关文件 type 列出M文件 lookfor 对help信息中的关键词查找which 找出函数与文件所在的目录名demo 运行MATLAB的演示程序 path 设置或查询MATLAB的路径 二.有关文件及其操作的语句 cd或ls 改变当前的工作目录 cd ..显示上一层目录 pwd 显示当前目录

matlab代码大全1

MATLAB主要命令汇总 MATLAB函数参考 附录1.1管理用命令 函数名功能描述函数名功能描述 addpath增加一条搜索路径rmpath删除一条搜索路径 demo运行Matlab演示程序type列出.M文件 doc装入超文本文档version显示Matlab的版本号 help启动联机帮助what列出当前目录下的有关文件 lasterr显示最后一条信息whatsnew显示Matlab的新特性lookfor搜索关键词的帮助which造出函数与文件所在的目录 path设置或查询Matlab路径 附录1.2管理变量与工作空间用命令 函数名功能描述函数名功能描述 clear删除内存中的变量与函数pack整理工作空间内存 disp显示矩阵与文本save将工作空间中的变量存盘 length查询向量的维数size查询矩阵的维数 load从文件中装入数据who,whos列出工作空间中的变量名 附录1.3文件与操作系统处理命令 函数名功能描述函数名功能描述 cd改变当前工作目录edit编辑.M文件 delete删除文件matlabroot获得Matlab的安装根目录 diary将Matlab运行命令存盘tempdir获得系统的缓存目录 dir列出当前目录的内容tempname获得一个缓存(temp)文件 !执行操作系统命令 附录1.4窗口控制命令 函数名功能描述函数名功能描述 echo显示文件中的Matlab中的命令more控制命令窗口的输出页面format设置输出格式 附录1.5启动与退出命令 函数名功能描述函数名功能描述 matlabrc启动主程序quit退出Matlab环境 startup Matlab自启动程序 附录2运算符号与特殊字符附录 2.1运算符号与特殊字符 函数名功能描述函数名功能描述

matlab实验 循环结构

实验(四)项目名称:循环结构 一、实验目的: 1. 掌握利用for语句实现循环结构的方法。 2. 掌握利用while语句实现循环结构的方法。 3. 熟悉利用向量运算来代替循环操作的方法。 二、实验原理 1.FOR 循环 在for和end语句之间的{commands}按数组中的每一列执行一次。在每一次迭代中,x被指定为数组的下一列,即在第n次循环中,x=array(:, n)。 2.WHILE循环 只要在表达式里的所有元素为真,就执行while和end 语句之间的{commands}。通常,表达式的求值给出一个标量值,但数组值也同样有效。在数组情况下,所得到数组的所有元素必须都为真。 三、实验环境 1.硬件:PC机 2. 软件:Windows操作系统、matlab2015 四、实验内容、步骤以及结果 4.1.1实验要求:用while语句写一个程序,k=5,每循环一次,自动减1,并自 动输出。 4.1.2实验步骤 (1)启动matlab,新建一个M文件; (2)输入程序,如图1; (3)保存文件; (4)编译源程序,观察屏幕上显示的编译信息,修改出现的错误,直到编译成功; 图1:程序输入 4.1.3运行结果如下:

图2:运行结果 4.2.1实验要求:1 、根据,求π 的近似值。当n 分别取100,1000,10000时,结果是多少? 要求:分别用循环结构和向量运算(使用sum 函数)来实现 4.2.2实验步骤: (1)启动matlab ,M 文件; (2)输入程序,如图3和4; (3)保存文件; 4.2.3运行结果如下: 图3:for 循环结构 图4:向量运算

matlab常用函数常用指令大全

matlab常用函数与常用指令大全matlab, 函数, 指令, 大全 matlab常用函数与常用指令大全 matlab常用函数- - 1、特殊变量与常数 ans 计算结果的变量名 computer 确定运行的计算机 eps 浮点相对精度 Inf 无穷大 I 虚数单位 inputname 输入参数名 NaN 非数 nargin 输入参数个数 nargout 输出参数的数目 pi 圆周率 nargoutchk 有效的输出参数数目 realmax 最大正浮点数 realmin 最小正浮点数 varargin 实际输入的参量 varargout 实际返回的参量 操作符与特殊字符 + 加- 减

* 矩阵乘法.* 数组乘(对应元素相乘) ^ 矩阵幂.^ 数组幂(各个元素求幂) \ 左除或反斜杠/ 右除或斜面杠 ./ 数组除(对应元素除) kron Kronecker张量积 : 冒号() 圆括 [] 方括. 小数点 .. 父目录... 继续 , 逗号(分割多条命令); 分号(禁止结果显示)% 注释! 感叹号 ' 转置或引用= 赋值 == 相等<> 不等于 & 逻辑与| 逻辑或 ~ 逻辑非xor 逻辑异或 2、基本数学函数 abs 绝对值和复数模长 acos,acodh 反余弦,反双曲余弦 acot,acoth 反余切,反双曲余切 acsc,acsch 反余割,反双曲余割 angle 相角 asec,asech 反正割,反双曲正割 secant 正切

asin,asinh 反正弦,反双曲正弦atan,atanh 反正切,双曲正切tangent 正切 atan2 四象限反正切 ceil 向着无穷大舍入 complex 建立一个复数 conj 复数配对 cos,cosh 余弦,双曲余弦 csc,csch 余切,双曲余切 cot,coth 余切,双曲余切 exp 指数 fix 朝0方向取整 floor 朝负无穷取整 *** 最大公因数 imag 复数值的虚部 lcm 最小公倍数 log 自然对数 log2 以2为底的对数 log10 常用对数 mod 有符号的求余 nchoosek 二项式系数和全部组合数real 复数的实部

matlab常用命令大全

matlab常用命令 A a abs 绝对值、模 acos 反余弦 acosh 反双曲余弦 acot 反余切 acoth 反双曲余切 acsc 反余割 acsch 反双曲余割 align 启动图形对象几何位置排列工具all 所有元素非零为真 angle 相角 ans 表达式计算结果的缺省变量名any 所有元素非全零为真 area 面域图 argnames 函数M文件宗量名 asec 反正割 asech 反双曲正割 asin 反正弦 asinh 反双曲正弦 assignin 向变量赋值 atan 反正切 atan2 四象限反正切 atanh 反双曲正切 autumn 红黄调秋色图阵 axes 创建轴对象的低层指令 axis 控制轴刻度和风格的高层指令 B b bar 二维直方图 bar3 三维直方图 bar3h 三维水平直方图 barh 二维水平直方图 base2dec X进制转换为十进制 bin2dec 二进制转换为十进制 blanks 创建空格串 bone 蓝色调黑白色图阵 box 框状坐标轴 break while 或for 环中断指令

brighten 亮度控制 C c capture (3版以前)捕获当前图形 cart2pol 直角坐标变为极或柱坐标 cart2sph 直角坐标变为球坐标 cat 串接成高维数组 caxis 色标尺刻度 cd 指定当前目录 cdedit 启动用户菜单、控件回调函数设计工具cdf2rdf 复数特征值对角阵转为实数块对角阵ceil 向正无穷取整 cell 创建元胞数组 cell2struct 元胞数组转换为构架数组 celldisp 显示元胞数组内容 cellplot 元胞数组内部结构图示 char 把数值、符号、内联类转换为字符对象chi2cdf 分布累计概率函数 chi2inv 分布逆累计概率函数 chi2pdf 分布概率密度函数 chi2rnd 分布随机数发生器 chol Cholesky分解 clabel 等位线标识 cla 清除当前轴 class 获知对象类别或创建对象 clc 清除指令窗 clear 清除内存变量和函数 clf 清除图对象 clock 时钟 colorcube 三浓淡多彩交叉色图矩阵 colordef 设置色彩缺省值 colormap 色图 colspace 列空间的基 close 关闭指定窗口 colperm 列排序置换向量 comet 彗星状轨迹图 comet3 三维彗星轨迹图 compass 射线图 compose 求复合函数 cond (逆)条件数 condeig 计算特征值、特征向量同时给出条件数condest 范-1条件数估计 conj 复数共轭 contour 等位线

相关文档
最新文档