MATLAB之最干货(一)

MATLAB之最干货(一)——走进value的世界

首先哈,咳咳 欢迎大家点进来,在这里呢,弟弟给大家分享一点关于MATLAB的干货,考试入门都不在话下。不多比比,直接干——

还得比比几句…

这儿呢, 建议大家有C语言或者其他编程语言的基础,不用精通,有那么回事就可以哈
再者就是对线性代数和矩阵有一定的了解,熟悉其基本的知识。
好了,开整…
首先这一节让我们走进value的世界

一.生成矩阵

1.直接法

a = [1,2,3;4,5,6;7,8,9];

2.冒号一维矩阵 a = 开始:步长:结束,步长为1可省略

	b = 11:10;
	b = 1:10;    %与上一行代码等价``

3.函数生成
linspace(开始,结束,元素个数),等差生成指定元素数的一维矩阵,省略个数则生成100个

c = linspace(0,10,5)

4.特殊矩阵

e = eye (4);  % eye(维数)的单位阵
z = zeros (1,4);  % zeros(维数)的全零阵
o = ones (4,1);   % ones(维数)的全1阵
r = rand(4);  % rand(维数)0-1随机分布的矩阵
rn = randn(4);  % randn(维数)0均值Gaussian随机分布的矩阵

二.矩阵运算

diag_a = diag(a,1);  % diag(行向量,主对角线上方第k条斜线)用行向量生成对角阵
tril_a = tril(a,1);  % tril(矩阵,主对角线上方第k条斜线)生成矩阵的下三角阵,triu上三角阵

1.+,-,*,/,^ 运算
就以 +为例

a * a;  

这儿就是矩阵相乘的知识了,不在多解释了哈
实现代码如下
在这里插入图片描述

2.点运算
% a.b , a./b , a.\b , a.^b 对应元素的,/,,^运算,
以.*为例

a.*a

这儿就是对应位置相乘了,代码在此
在这里插入图片描述
这儿有个主意点哈,进行点乘运算的矩阵维数相等。
3.逆矩阵

pinv(a);   % 伪逆矩阵,当a不是方阵,求广义逆矩阵;当a是可逆方阵,结果与逆矩阵相同

4.特征值,特征向量

[v,D] = eig(a);   % 输出v为特征向量,D为特征值对角阵

5.行列式

det(a);

6.秩

rank(a);

7.伴随

compan(b);

三.矩阵的修改

1.矩阵的修改
(1) 部分替换

chg_a = a;
chg_a(2,3) = 4;  %(行,列)元素替换  这儿是把第2行第3列元素替换为4
chg_a(1,:) = [2,2,2];  %(行,:)替换行,为[ ]删除该行   这儿是把第一行替换成2,22,
chg_a(:,1) = [ ];    %(:,)替换列,为[ ] 删除该列     这儿是删除第一列

(2) 转置

T_a = a' ; 

(3) 指定维数拼接

c1_a = cat(1,a,a);   %垂直拼接
c2_a = cat(2,a,a);    %水平拼接 

(4) 变维

rs_a = reshap(a,1,9);  % 元素个数不变,矩阵变为m*n

2.信息获取
(1) 矩阵的行列数

[row_a,col_a] = size(a);

(2) 行列中最大的

len_a = length(a);

3.多维数组的创建
(1) 直接法

mul_1(:,:,1) = [1,2,3;2,3,4];
mul_1(:,:,2) = [3,4,5;4,5,6];

(2) 扩展法

  mul_2 = [1,2,3;2,3,4];
  mul_2(:,:,2) = [3,4,5;4,5,6];

(3) cat 法 (此方法平时我们用的最多了)

mul_31 = [1,2,3;2,3,4];
mul_32 = [3,4,5;4,5,6];
mul_3 = cat(3,mul_31,mul_32);  % 把a1a2按照“3”维连接

四.字符串

1.创建

str0 = 'hello world';   %单引号引起
str1 = ‘I’'am' 'a' 'student';  %字符串中单引号写两遍
str2 = [‘I’'am' 'a' 'student'];  %方括号链接多字符串
str4 = strcat(str0, str1);  % strcat连接字符串函数
str5 = strvcat(str0, str1);  % strvcat连接产生多行字符串
str6 = double(str0);  % 取str0的ASCII值,也可用abs函数
str7 = char(str6);  % 把ASCII转为字符串

2.操作
(1) 比较

strcmp(str0,str1);   %相等为1,不等为0
strncmp(str0,str1,3);  %比较前三个是否相等
strcmpi(str0,str1);  % 忽略大小写比较
strncmpi(str0,str1,3);  %忽略大小写比较前三个是否相等

(2) 查找 替换

strfind(str0,str1);  %在str0 找到str1 的位置
strmatch(str1,str0);  %在str0字符串数组中找到str1开头的行数
strtok(str0);   %截取str0第一个分隔符前的部分
strrep(str0,str1,str2);  %在str0 中用str2替换str1

(3) 其他

upper(str0);   %转大写
lower(str0);   %转小写
strjust(str0,'right');  %将str0右对齐,left左对齐,center中间对齐
strtrim(str0);  % 删除str0开头结尾空格
eval(str0);  % 将str0作为代码执行

五.转换

(1) % 2 -->

num2str,将数字转字符串;
dec2hex,将十进制转十六进制
str_b = num2str(b);   % abs,double取ASCII码;char把ASCII转字符串
abs_str = abs('aAaA');

好了,今天就到这儿吧?
翻到头看也学习了不少的知识,同学们要认真学习的哦,如果有看不懂的地方复制代码去matlab中试着运行一下,相信你会豁然开朗。
今天学习的知识在日常的学习中会经常见到,也是一些比较基础的内容,多看几遍都会懂的。
下一节我会给大家带来关于matlab中的结构部分
不再比比,弟弟先行告退,下次见。古德白

猜你喜欢

转载自blog.csdn.net/weixin_49005845/article/details/109626703