写matlab程序中用记录下来的小碎片

matlab使用的小知识:

Ctrl+R:将多行注释

Ctrl+T:为Ctrl+R的逆转

clc:代表 clear command window,即清空当前的 command window窗口,也就是清屏clear all:清除所有已加载存在的数据

Ctrl+i:自动排版

分割矩阵:new_matrix=matrix(start_line:end_line,start_row:end_row)

矩阵合并:列列合并:matrix=[matrix1;matrix2];  行行合并:matrix=[matrix1,matrix2]或者matrix=[matrix1 matrix2]

类的实例:

classdef TensileData

properties

Material = ‘carbon steel‘;

SampleNumber = 0;

Stress

Strain

end

properties (Dependent)

Modulus

end

methods

function td = TensileData(material,samplenum,stress,strain)

if nargin > 0

td.Material = material;

td.SampleNumber = samplenum;

td.Stress = stress;

td.Strain = strain;

end

end % TensileData

end

methods

function obj = set.Material(obj,material)

if ~(strcmpi(material,‘aluminum‘) ||...

strcmpi(material,‘stainless steel‘) ||...

strcmpi(material,‘carbon steel‘))

error(‘Material must be aluminum, stainless steel, or carbon steel‘)

end

obj.Material = material;

end % Material set function

function modulus = get.Modulus(obj)

ind = find(obj.Strain > 0); % Find nonzero strain

modulus = mean(obj.Stress(ind)./obj.Strain(ind));

end % Modulus get function

function obj = set.Modulus(obj,~)

fprintf(‘%s%d\n‘,‘Modulus is: ‘,obj.Modulus)

error(‘You cannot set Modulus explicitly‘);

end

function disp(td)

fprintf(1,‘Material: %s\nSample Number: %g\nModulus: %1.5g\n‘,...

td.Material,td.SampleNumber,td.Modulus);

end % disp

function plot(td,varargin)

plot(td.Strain,td.Stress,varargin{:})

title([‘Stress/Strain plot for Sample ‘,num2str(td.SampleNumber)])

xlabel(‘Strain %‘)

ylabel(‘Stress (psi)‘)

end % plot

end

methods (Access = ‘private‘) % Access by class members only

function m = CalcModulus(td)

% Over-simplified calculation of Elastic Modulus

ind = find(td.Strain > 0); % Find nonzero strain

m = mean(td.Stress(ind)./td.Strain(ind));

end % CalcModulus

end

end % classdef

在上述代码中,

classdef TensileData

  ...

end

是定义一个TensileData类。代码:

properties

Material = ‘carbon steel‘;

SampleNumber = 0;

Stress

Strain

end

是定义这个类的属性,也就是C++中类的成员变量。但是和C++不同的是,matlab中的类定义还有一个比较特别的地方的,就是定义依赖属性,如下述代码:

properties (Dependent)

Modulus

end

这表示Modulus这个属性是个依赖属性,它的值是通过其他属性计算得到的,其中Dependent的默认属性值为True。

它的值是通过下面函数实现的:

% Modulus get function

function modulus = get.Modulus(obj)

ind = find(obj.Strain > 0); % Find nonzero strain

modulus = mean(obj.Stress(ind)./obj.Strain(ind));

end

类的方法(函数)的定义是以methods ... end的的形式出现的。如下面的类方法的定义:

methods

function td = TensileData(material,samplenum,stress,strain)

if nargin > 0

td.Material = material;

td.SampleNumber = samplenum;

td.Stress = stress;

td.Strain = strain;

end

end

end

该函数块定义了TensileData构造函数方法。上述代码中的最后一个方法 methods (Access = ‘private‘)

中的Access = ‘private‘表示该方法仅能被类本身访问和修改,是个私有成员方法。其中属性Access又可分为

SetAccess和GetAccess,属性值和Access相同。

在disp函数语句中出现“...”表示下一行和当前行是连接在一起的。如:

function disp(td)

fprintf(1,‘Material: %s\nSample Number: %g\nModulus: %1.5g\n‘,...

td.Material,td.SampleNumber,td.Modulus);

end

就表示第二行和第三行是连在一起的。

时间: 2024-10-02 14:53:51

写matlab程序中用记录下来的小碎片的相关文章

代写Servlet、代写JSP、代写JavaBean程序作业

代写Servlet.代写JSP.代写JavaBean程序作业Servlet+JSP+JavaBean模式适合开发复杂的web应用,在这种模式下,Servlet负责处理用户请求,JSP负责数据收集和显示,JavaBean封装数据操作的相关功能.请以Servlet+JSP+JavaBean模式开发新闻发布系统,主要包括用户添加.用户登录.用户信息修改.新闻发表.新闻修改和新闻查看功能.具体要求如下:1.完成数据库设计,要求记录管理员信息和新闻信息,其中管理员信息包括:用户名.密码.性别.QQ号.em

win10下通过Anaconda安装TensorFlow-GPU1.3版本,并配置pycharm运行Mnist手写识别程序

折腾了一天半终于装好了win10下的TensorFlow-GPU版,在这里做个记录. 准备安装包: visual studio 2015: Anaconda3-4.2.0-Windows-x86_64: pycharm-community: CUDA:cuda_8.0.61_win10:下载时选择 exe(local) CUDA补丁:cuda_8.0.61.2_windows: cuDNN:cudnn-8.0-windows10-x64-v6.0;如果你安装的TensorFlow版本和我一样1.

Android Camera 使用小结。两种方法:一是调用系统camera app,二是自己写camera程序。

源文链接:http://www.cnblogs.com/franksunny/archive/2011/11/17/2252926.html Android Camera 使用小结 Android手机关于Camera的使用,一是拍照,二是摄像,由于Android提供了强大的组件功能,为此对于在Android手机系统上进行Camera的开发,我们可以使用两类方法:一是借助Intent和MediaStroe调用系统Camera App程序来实现拍照和摄像功能,二是根据Camera API自写Came

求解轨道力学二体意义下的Lambert方程(兰伯特方程)的Matlab程序

轨道力学中二体问题下求解兰伯特方程需要解决一个迭代问题. 这是一个老外写的,有很多注释,相信大家应该能看懂,经实际检测,切实可用 function [v1,v2]=solve_lambert(r1,r2,t,GM,lw,N,branch) %This routine implements a new algorithm that solves Lambert's problem. The %algorithm has two major characteristics that makes it

隐藏你写的程序代码

[ 转自http://blog.csdn.net/zhongguomao/article/details/9111135 ] 如何隐藏你写的程序代码 不管是出于什么样的原因, 你偶尔会想到把自己写的程序代码隐藏, 当然, 这些代码一定不是项目中用到的, 比如你自己写的小程序 SAP提供隐藏代码功能, 但是需要注意的是, 代码一旦被隐藏, 则终生无法恢复, so, 在做这个隐藏代码的动作前, 一定要备份好你自己的代码, 切记切记. 1. 撰写插入隐藏码的程序 *&-----------------

蚁群算法 matlab程序(已执行)

下面是解放军信息project大学一个老师编的matlab程序,请尊重原作者劳动,引用时请注明出处. 我经过改动添加了凝视,已经执行过,无误, function [R_best,L_best,L_ave,Shortest_Route,Shortest_Length]=ACATSP(C,NC_max,m,Alpha,Beta,Rho,Q) %%------------------------------------------------------------------------- %% 主

[zz]求一维序列的信息熵(香浓熵)的matlab程序实例

对于一个二维信号,比如灰度图像,灰度值的范围是0-255,因此只要根据像素灰度值(0-255)出现的概率,就可以计算出信息熵.    但是,对于一个一维信号,比如说心电信号,数据值的范围并不是确定的,不会是(0-255)这么确定,如果进行域值变换,使其转换到一个整数范围的话,就会丢失数据,请高手指点,怎么计算. 比如数字信号是x(n),n=1~N(1)先用Hist函数对x(n)的赋值范围进行分块,比如赋值范围在0~10的对应第      一块,10~20的第二块,以此类推.这之前需要对x(n)做

PIC12F629帮我用C语言写个程序,控制三个LED亮灭

http://power.baidu.com/question/240873584599025684.html?entry=browse_difficult PIC12F629帮我用C语言写个程序,控制三个LED亮灭! 2014-12-31 16:05DINZEYU  分类:C/C++ | 浏览 87 次 C语言VC++ 按键按一次LED1低亮,按两次高亮,按三次2HZ闪,按三次关,按键长按3秒松开LED2亮,长按3秒松开LED2灭,按键长按5秒松开LED3亮,长按5秒松开LED3灭,每个功能独

席位分配问题——惯例Q值法和d'hondt法的MATLAB程序

  本篇博文为追忆曾经写过的算法系列第四篇 温故知新 本篇于2009年发表于百度博客,当时还没接触CSDN,所以是文学和技术博客混淆,不过这个程序博文访问量突破2000,有不少网友评论互动,应该对很多人有一定的帮助. 程序介绍了数学建模中经典问题的两种解法,即席位分配问题! %适用于所有情况 BY Gu clear all clc %惯例Q值法分配席位,wy为席位数,ps为人数总和,R为分配方案 wy=19; P=[103 63 34] %菜单选项 MENUN=menu('选择方法','惯