MATLAB之最干货(一)——走进value的世界
首先哈,咳咳 欢迎大家点进来,在这里呢,弟弟给大家分享一点关于MATLAB的干货,考试入门都不在话下。不多比比,直接干——
还得比比几句…
这儿呢, 建议大家有C语言或者其他编程语言的基础,不用精通,有那么回事就可以哈
再者就是对线性代数和矩阵有一定的了解,熟悉其基本的知识。
好了,开整…
首先这一节让我们走进value的世界吧
一.生成矩阵
1.直接法
a = [1,2,3;4,5,6;7,8,9];
2.冒号一维矩阵 a = 开始:步长:结束,步长为1可省略
b = 1:1: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,2,2,
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中的结构部分
不再比比,弟弟先行告退,下次见。古德白