MATLAB基本语法之层次分析法

Posted Z_FIEND°

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB基本语法之层次分析法相关的知识,希望对你有一定的参考价值。

前言

  • 为了参加数学建模的比赛,懂的都懂好吧...开一个坑,一边学数学建模一边进行MATLAB的语法学习,里面很多理解都很不深刻,大佬勿怪好吧...

基本常识


1.分号(  ;)

在matlab中分号是换行的含义,也可以代表一段语句的结束,感觉和C的分号差不多吧,在某种程度上又和C中的逗号的作用有重叠

a = 3;                //会直接输出这段话,但不进行操作
a = 5                 //会明显的输出a = 5 

对比以下例子

a = 3+5;              //输出了a = 3+5;
a = 3+5               //输出了8

可见分号还起到是否执行显示语句的作用?不太确定哈...(后面理解加深了再修改解释)


2.-1多行注释:(%)

  • 选中要注释的若干语句,快捷键Ctrl+R

2.-2取消注释

  • 选中要取消注释的语句,快捷键Ctrl+T

3.清空窗口

 clear可以清楚工作区的所有变量
1.clear

% clc可以清除命令行窗口中的所有文本,让屏幕变得干净
2.clc

  • 组合在一起:clear;clc

这两条一起使用,起到“初始化”的作用,防止之前的结果对新脚本文件(后缀名是 .m)产生干扰。(这里也可以看出来分号的作用的确是换行)


层次分析法(用到的函数)

4.输出disp()和输入input()

disp()

matlab中disp()就是屏幕输出函数,类似于c语言中的printf()函数  

disp('该说什么好呢...我是江户川柯南...是一个侦探...')                %输出字符


a = [1,2,3]            %同一行中间用逗号分隔,也可以不用逗号,直接用空格
a = [1 2 3];        %若是加上分号,就会导致这组数在工作区保存,但不会输出,怎么理解呢?..应该可以说是保存在数据流中,这说明了分号的另一个作用,阻止数据流的输出..
disp(a) 
% 注意,disp函数比较特殊,这里可要分号,可不要分号哦
disp(a);  

input()
 一般我们会将输入的数、向量、矩阵、字符串等赋给一个变量,这里我们赋给A,有点面向对象的味道了,很像python中的input(),应该说一模一样?..

A = input('请输入A:');
B = input('请输入B:')
% 注意观察工作区,并体会input后面加分号和不加分号的区别:作用一致,但B输入的数值会直接输出到屏幕上


5.字符串的合并strcat()和num2str()

 strcat()

strcat(str1,str2……,strn) 

strcat('字符串1','字符串2') 

num2str()  将数字转换为字符串

c = 102
num2str(c)               

%转换类型之后,其字符串类型的数据将存在工作区中(现在看来,这个工作区很像什么?内存池吧?..像是一个MATLAB编译器自主申请的一块小内存,由用户自主分配使用并释放)


disp(['c的取值为' num2str(c)])             

%其实这里就涉及到了[ ]的应用,[ ]很像python中的列表,但python中的列表是可以装各种类型的数据的,但当[]嵌套[]时,若是数据类型不同,将导致一部分类型的数据转为乱码,如整形类型和字符放一起就会乱码  

           

 %这里是不是侧面说明了disp不只能输出字符类型的变量?这python中的print()和C中的printf()很像,但也不一样,python中的print()直接一个逗号就可以让字符串相连,但disp就鸡肋,也没有像C一样的规范性,可以直接拿格式字符完成输出


disp(strcat('c的取值为', num2str(c)))


sum()

这个函数比较简单,用在向量上是默认求和列向量,如果只有行向量就求和行向量

1.如果是向量(无论是行向量还是列向量),都是直接求和
E = [1,2,3]
sum(E)
E = [1;2;3]
sum(E)

2.如果是矩阵,则需要根据行和列的方向作区分
E = [1,2;3,4;5,6]


%按列求和(得到一个行向量)
a = sum(E)                %9,12
a = sum(E,1)             %第二个参数应该是选择求和方向1为列,2为行,啧...这就很不合理

%按行求和(得到一个列向量)
a = sum(E,2)

%对整个矩阵求和
a = sum(sum(E))

E(:)是将第二列的向量放到第一列的向量下面
a = sum(E(:))%这里再求和


 

以上是关于MATLAB基本语法之层次分析法的主要内容,如果未能解决你的问题,请参考以下文章

层次分析模型(AHP)及其MATLAB实现

Matlab:数模01-层次分析法

Matlab数学建模层次分析法

Matlab数学建模层次分析法

Matlab数学建模层次分析法

层次分析法