从零开始学Matlab(一) 矩阵的基本操作、输入输出、函数

您所在的位置:网站首页 matlab如何构造矩阵 从零开始学Matlab(一) 矩阵的基本操作、输入输出、函数

从零开始学Matlab(一) 矩阵的基本操作、输入输出、函数

2023-08-10 22:23| 来源: 网络整理| 查看: 265

MATLAB软件版本:MATLAB R2019b

本文是博主从零开始学Matlab的记录,适合第一次接触Matlab的同学阅读。

因为CSDN没有Matlab语言的代码块格式,所以本文代码块均按C++语法高亮显示,为了方便显示,注释用//标注(实际上Matlab注释用%标注)。

文章目录 1.内置常量2.产生行向量3.查看已有的变量信息4.矩阵赋值并取出子矩阵5.删除矩阵的整行或整列6.合并矩阵7.矩阵的变换(转置、重塑、旋转)8.特殊矩阵9.输入10.输出11.函数

1.内置常量 >> eps // 计算机的最小数 ans = 2.2204e-16 >> pi // 圆周率 ans = 3.1416 >> i // sprt(-1) ans = 0.0000 + 1.0000i >> j // sprt(-1) ans = 0.0000 + 1.0000i 2.产生行向量 x=0:1:5 // [0,5]区间产生行向量,间隔为1 x=0:5 // [0,5]区间产生行向量,默认间隔为1 >> t=[0:0.2:0.6] // [0,0.6]区间产生行向量,间隔为0.2 // 写成 t=0:0.2:0.6 效果也一样 t = 0 0.2000 0.4000 0.6000 >> t=[0:0.2:0.7] t = 0 0.2000 0.4000 0.6000 >> t=linspace(1,2,3) // [1,2]区间按线性(等差数列)产生行向量,个数为3 t = 1.0000 1.5000 2.0000 >> t=linspace(1,2,4) t = 1.0000 1.3333 1.6667 2.0000 >> t=logspace(1,2,2) // [10^1,10^2]区间按等比数列产生行向量,个数为2 t = 10 100 >> t=logspace(1,2,3) t = 10.0000 31.6228 100.0000 3.查看已有的变量信息 >> who 您的变量为: ans t >> whos Name Size Bytes Class Attributes ans 1x1 8 double t 1x3 24 double >> size(t) // 列出n,m ans = 1 3 >> length(t) // 列出max(n,m) ans = 3 4.矩阵赋值并取出子矩阵

冒号表示按列堆叠成向量。

>> A=[1,2;3,4] A = 1 2 3 4 >> A(:) // 按列取出所有元素 ans = 1 3 2 4 >> A(:,2) // 取出第2列 ans = 2 4 >> A(2,:) // 取出第2行 ans = 3 4 >> A=[1,2,3;4,5,6;7,8,9] A = 1 2 3 4 5 6 7 8 9 >> A(2:3,1:2) // 取出第2行到第3行,第1列到第2列的所有元素 ans = 4 5 7 8 5.删除矩阵的整行或整列 >> A=[1,2;3,4] A = 1 2 3 4 >> A(:,1)=[] // 删去第一列,即把第一列变成空矩阵[] >> B=[4,5;6,7] B = 4 5 6 7 >> B(1,:)=[] // 删去第一行 B = 6 7 6.合并矩阵 >> A=[1,2,3] A = 1 2 3 >> B=[4,5,6] B = 4 5 6 >> C=[A,B] // 按行合并矩阵 C = 1 2 3 4 5 6 >> C=[A;B] // 按列合并矩阵 C = 1 2 3 4 5 6 7.矩阵的变换(转置、重塑、旋转)

(1)转置

>> A=[1+i,2+i;3-i,4+i] A = 1.0000 + 1.0000i 2.0000 + 1.0000i 3.0000 - 1.0000i 4.0000 + 1.0000i >> A' // 共轭转置,转置后,虚部变为相反数 ans = 1.0000 - 1.0000i 3.0000 + 1.0000i 2.0000 - 1.0000i 4.0000 - 1.0000i >> A.' // 非共轭转置,转置后,虚部不变 ans = 1.0000 + 1.0000i 3.0000 - 1.0000i 2.0000 + 1.0000i 4.0000 + 1.0000i

另外,对于实数矩阵的转置来说,A'与A.'没有区别。

(2)重塑

>> A=[1,2,3;4,5,6] A = 1 2 3 4 5 6 >> reshape(A,3,2) // 按列顺序重塑矩阵A为3*2 ans = 1 5 4 3 2 6

(3)逆时针旋转90度

>> A A = 1 2 3 4 5 6 >> rot90(A) ans = 3 6 2 5 1 4 8.特殊矩阵 >> eye(3) // 单位矩阵 ans = 1 0 0 0 1 0 0 0 1 >> eye(3,4) ans = 1 0 0 0 0 1 0 0 0 0 1 0 >> ones(2) // 全为1的矩阵 ans = 1 1 1 1 >> ones(2,3) ans = 1 1 1 1 1 1 >> zeros(2) // 全为0的矩阵 ans = 0 0 0 0 >> zeros(2,3) ans = 0 0 0 0 0 0 >> diag([1,2,3]) // 产生对角矩阵 ans = 1 0 0 0 2 0 0 0 3 >> rand(2) // 创建随机矩阵,服从均匀分布 ans = 0.2785 0.9575 0.5469 0.9649 >> rand(2,1) ans = 0.1576 0.9706 >> randn(2) // 创建随机矩阵,服从正态分布 ans = 0.5377 -2.2588 1.8339 0.8622 >> randn(2,1) ans = 0.3188 -1.3077 >> randperm(5) // 产生随机排列 ans = 5 3 1 2 4 9.输入 s=input('please input a string: ','s'); 10.输出 >> x=rand(1,3) x = 0.9134 0.6324 0.0975 >> fprintf("x=%.3f\n",x) // 输出x的所有元素,保留3位小数 x=0.913 x=0.632 x=0.098 >> fprintf("x=%.3f\n",x(2)) // 输出x[2](可省略第1行的行下标) x=0.632 >> fprintf("x=%.3f\n",x(1,2)) // 输出x[1][2] x=0.632 >> y=[1,2;3,4] y = 1 2 3 4 >> fprintf("y=%.3f\n",y) // 按列输出y的所有元素 y=1.000 y=3.000 y=2.000 y=4.000 >> fprintf("y=%.3f\n",y(2,1)) // 输出y[2][1] y=3.000 >> fprintf("y=%.3f\n",y(1)) // 输出y[1][1](可省略第1列的列下标) y=1.000 >> fprintf("y=%.3f\n",y(2)) // 输出y[2][1](可省略第1列的列下标) y=3.000 11.函数

编写函数,存于文件ave.m中,代码如下:

% You can get the average of a vector. % Just input "ave;" to run this function. function y = ave(x) x = input('input a vector x='); [m,n] = size(x); if ~(m==1|n==1) error('please input a vector which is m=1 or n=1') end y = sum(x)/length(x); fprintf("y=%.2f\n",y);


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3