clear all %清除Workspace中的所有变量
clc %清除Command Window中的所有命令
A = 2
a = 3
% ABCDEFGHIJKLMNOPQRSTUVWXYZ123456ABCDEFGHIJKLMNOPQRSTUVWXYZ123456 = 3
% 3A = 4
% .a = 5
% /b = 5
a_2 = 3
% a.2 = 4
A = rand(3, 5)
rows = size(A, 1)
cols = size(A, 2)
2 + 4
10 - 7
3 * 5
8 / 2
s = 'a'
abs(s) %输出s的ASCII码
char(65) %根据ASCII码输出字符
num2str(65)
str = 'I Love MATLAB & Machine Learning.'
length(str) %计算字符串的长度
A = [1 2 3; 4 5 2; 3 2 7]
B = A' %矩阵B为矩阵A的转置
C = A(:) %将矩阵A按列拉长
D = inv(A) %D为矩阵A的逆,inv()非方阵不能求逆
A * D
E = zeros(10, 5, 3) %创建3个10行5列的值全为0的矩阵
E(:, :, 1) = rand(10, 5) % rand生成均匀分布的伪随机数。分布再(0-1)之间
% 语法:rand(m, n)生成m行n列的均匀分布的伪随机数
% rand(m, n, 'double')生成制定精度的均匀分布的伪随机数,参赛还可以是'single'
% rand(RandStream, m, n)利用指定的RandStream(随机种子)生成伪随机数
E(:, :, 2) = randn(10, 5) %生成标准正态分布的伪随机数(均值为0, 方差为1)
% 语法:和上面一样
E(:, :, 3) = randi(5, 10, 5) % randi生成均匀分布的伪随机数
% 语法:randi(iMax)在开区间(0, iMax)生成均匀分布的伪随机整数
% randi(iMax, m, n),在开区间(0, iMax)生成m * n型随机矩阵
% r = randi([iMin, iMax], m, n)在开区间(iMin, iMax)生成m * n型随机矩阵
A = cell(1, 6)
A{2} = eye(3) %eye(n)生成n * n的对角线数值为1的单位矩阵,matlab的索引从1开始,python、C++等索引从0开始
A{5} = magic(5) %magic(n)生成n阶的幻方,把[1, n^2]排成n阶矩阵,使得矩阵的每行、每列、以及主、副对角线上面的n个数之和都相等,且等于n * (n^2 + 1) / 2
B = A{5}
books = struct('name', {{'Machine Learning', 'Data Mining'}}, 'price', [30 40])
books.name %在books中选择name这个属性
books.name(1) %用小括号()取出的是cell
books.name{1} %用大括号{}取出的是字符串
A = [1 2 3 5 8 5 4 6]
B = 1:2:9 % begin:步长:end ->[1 3 5 7 9]
C = repmat(B, 3, 2) % 把矩阵B按行重复3次,按列重复2次,即以B(n, m)为单位,构成3 * n行,2 * n列的矩阵
D = ones(2, 4) %ones(n, m)生成n行m列的矩阵,其中值全为1
A = [1 2 3 4; 5 6 7 8]
B = [1 1 2 2; 2 2 1 1]
C = A + B % 对应项相加
D = A - B % 对应项相减
E = A * B' % A为2行4列,B也为2行4列,不能相乘,B的转置B‘为4行2列可以与A相乘
F = A .* B % 对应项相乘
G = A / B % A / B 相当于 A * B的逆,即A * pinv(B)
% G * B = A -> G * B * pinv(B) = A * pinv(B) -> G = A * pinv(B),相当于A * B的逆
H = A ./ B % 对应项相除
A = magic(5)
B = A(2, 3) % 矩阵A第2行第3列的值
C = A(3, :) % 矩阵A第3行的值
D = A(:, 4) % 矩阵A第4列的值
[m, n] = find(A > 20) % 返回矩阵A中大于20的索引,m存行,n存列
find(A) % 返回向量或者矩阵中不为0的元素的位置索引
find(A == x) % 返回向量或者矩阵中等于x的元素的位置索引
find(A > x) % 返回向量或者矩阵中大于x的元素的位置索引
1. for循环结构
其中,步长的默认值为1,可以省略
初值、步长、终值可以是正数也可以是负数,还可以是整数,也可以是小数,只要符合数学逻辑即可
for 循环变量 = 初值 : 步长 : 终值
执行语句 1
执行语句 2
........
执行语句 n
end
% 求1^2 + 2^2 + 3^2 + 4^2 + 5^2的和
sum = 0
for n = 1 : 5
sum = sum + n
end
2. while循环结构while 条件表达式
执行语句 1
执行语句 2
........
执行语句 n
end
% 求1 + 2 + 3 + 4 + 5 + ..... + 10的和
s = 0
n = 1
while n <= 10
s = s + n
n = n + 1
end
3. if … end结构
if 条件表达式
......
语句体
......
end
% 用if ... end 结构编写一段程序,要求满足条件时系统显示 ”成立“。
a = 100
b = 20
if a > b
'成立'
end
4. if … else … end 结构if 表达式
语句体1
else
语句体2
end
% 用if ... else ... end 结构编写一段程序,要求满足条件时系统显示 ”成立“,不满足条件时系统显示 ”不成立“。
a = 100
b = 20
if a > b
'成立'
else
'不成立'
end
5.switch … case … end 结构otherwise可以省略
switch 表达式(数值或字符串)
case 数值或字符串1
语句体 1
case 数值或字符串2
语句体 2
.........
otherwise
语句体 n
end
x = 0 : 0.01 : 2*pi % 定义x
y = sin(x) % 定义y
figure % 建立一个幕布
plot(x, y) % 按(x, y)来绘图
title('y = sin(x)') % 起一个标题
xlabel('x') % x轴的标签
ylabel('sin(x)') % y轴的标签
xlim([0 2*pi]) % x轴显示的值从0到2*pi
x = 0 : 0.01 : 20
y1 = 200 * exp(-0.05 * x) .* sin(x)
y2 = 0.8 * exp(-0.5 * x) .* sin(10 * x)
figure
[AX, H1, H2] = plotyy(x, y1, x, y2, 'plot') % plotyy()共用一个x轴坐标系
set(get(AX(1), 'Ylabel'), 'String', 'Slow Decay') % 给y1轴加上属性为"String"(字符串)的Slow Decay的标签
set(get(AX(2), 'Ylabel'), 'String', 'Fast Decay') % 给y2轴加上属性为"String"(字符串)的Fast Decay的标签
xlabel('Time (\musec)') % 给x轴加上Time (\musec)的标签
title('Multiple Decay Rates') % 设置一个标题:Multiple Decay Rates
set(H1, 'LineStyle', '--') % 设置H1的线型(LineStyle)为虚线
set(H2, 'LineStyle', ':') % 设置H2的线型(LineStyle)为冒号线
% 线性选项参数(LineStyle)
% 线型 符号
% 实线 -
% 虚线 --
% 冒号线 :
% 点画线 -.
t = 0 : pi/50 : 10*pi
plot3(sin(t), cos(t), t) % plot3(x, y, z)绘制一个三维的图
xlabel('sin(t)') % x轴的标签
ylabel('cos(t)') % y轴的标签
zlabel('t') % z轴的标签
grid on % 在图片上增加网格线
axis square % 将图片变成看起来像正方体
hold on % 允许在同一个幕布当中,保留原来的线,再绘制其他的线
hold off % 不保留当前的线,重新在幕布上绘制线
x = linspace(0, 2*pi, 60);
subplot(2, 2, 1) %把窗口分割成2行2列的小方块,选择第1个小方块绘图
plot(x, sin(x)-1);
title('sin(x)-1');
axis([0, 2*pi, -2, 0]) %设置x,y的定义域, x为[0, 2*pi], y为[-2, 0]
subplot(2, 1, 2) %把窗口分割成2行1列的小方块,选择第2个小方块绘图
plot(x, cos(x)+1);
title('cos(x)+1')
axis([0, 2*pi, 0, 2]) %设置x,y的定义域, x为[0, 2*pi], y为[0, 2]
subplot(4, 4, 3) %把窗口分割成4行4列的小方块,选择第3个小方块绘图
plot(x, tan(x));
title('tan(x)')
axis([0, 2*pi, -40, 40]) %设置x,y的定义域, x为[0, 2*pi], y为[-40, 40]
subplot(4, 4, 8) %把窗口分割成4行4列的小方块,选择第8个小方块绘图
plot(x, cot(x));
title('cot(x)')
axis([0, 2*pi, -35, 35]) %设置x,y的定义域, x为[0, 2*pi], y为[-35, 35]

linspace( )函数
用法:linspace(x1, x2, N)
功能:linspace是Matlab中的一个指令,用于产生x1,x2之间的N点行矢量。其中x1、x2、N分别为起始值、中止值、元素个数。若缺省N,默认点数为100。
X = linspace(1, 100, 1)
将产生从1到100步长为1的数组。类似于在命令窗口中输入:X = [1 : 1 : 100]
X = linspace(5, 100, 20)
将输出:X = 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
这和X = [5 : 5 : 100]的效果是一样的。
% 编辑 -> 复制图形 % 复制图形后可以之间在word里面用Ctrl+v就可以把图片粘贴上去
% 文件 -> 另存为 % 可以选择以图片的形式另存为
% 文件 -> 导出设置 % 在这里对图形的大小进行精确的设置(广泛应用于论文中)
% 编辑(Edit) -> 复制选项 % 在这里可以调节导出的图片的剪贴板格式、图形背景颜色、大小
% 编辑(Edit) -> 图形属性 % 在这里可以对图的元素进行更细节的设置
[x, y, z] = peaks(30)
mesh(x, y, z)
grid % 原本图上有网格线就可以取消网格线,原本没有网格线就可以显示网格线

peaks( )函数
matlab 中的 peaks 函数是一个典型的 多元函数 。它本质上是一个二元高斯分布的概率密度函数,函数表达式为
f ( x , y ) = 3 ( 1 − x ) 2 e − x 2 − ( y + 1 ) 2 − 10 ( 1 5 x − x 3 − y 5 ) e − x 2 − y 2 − 1 3 e − ( x + 1 ) 2 − y 2 f(x, y) = 3(1-x)^2e^{-x^2-(y+1)^2}-10(\frac{1}{5}x-x^3-y^5)e^{-x^2-y^2}-\frac{1}{3}e^{-(x+1)^2-y^2} f(x,y)=3(1−x)2e−x2−(y+1)2−10(51x−x3−y5)e−x2−y2−31e−(x+1)2−y2
f=@(x,y) 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2)- 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2)- 1/3*exp(-(x+1).^2 - y.^2);
ezmesh(f);
z = peaks; % 返回一个49*49的矩阵
z = peaks(n); % 返回一个n*n的矩阵
peaks(n); % 没有输出参数时,这个函数直接使用surf来绘制peaks,默认n为49
clc;clear;close all;
figure(1);
z=peaks(25);
surf(z);
figure(2);
peaks(5);%没有输出值的peaks函数直接绘制表面图
[x, y, z]=peaks(25);
figure(3);
surf(x,y,z);%注意图像2和图像3坐标的差异性,相当于平移了
surf(X,Y,Z) % 创建一个三维曲面图,它是一个具有实色边和实色面的三维曲面。该函数将矩阵 Z 中的值绘制为由 X 和 Y 定义的 x-y 平面中的网格上方的高度。曲面的颜色根据 Z 指定的高度而变化。
surf(Z) % 创建一个曲面图,并将 Z 中元素的列索引和行索引用作 x 坐标和 y 坐标。
mesh(X,Y,Z) % 创建一个网格图,该网格图为三维曲面,有实色边颜色,无面颜色。该函数将矩阵 Z 中的值绘制为由 X 和 Y 定义的 x-y 平面中的网格上方的高度。边颜色因 Z 指定的高度而异。
mesh(Z) %创建一个网格图,并将 Z 中元素的列索引和行索引用作 x 坐标和 y 坐标
f=@(x,y) 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2)- 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2)- 1/3*exp(-(x+1).^2 - y.^2);
figure(1);
ezmesh(f); % ezmesh(f,n)表示绘制函数f的网格图形,网格数为n*n
figure(2);
ezsurf(f); % ezmesh(f,n)表示绘制函数f的三维曲面图,网格数为n*n
surf( )函数
用surf命令绘制可以得到的是着色的三维曲面。
z1 = 0 ; % 底面所在的平面
z2 = 2 ; % 顶面面所在的平面
M = 20 ; % 纬线数目
N = 20; % 经线数目
t = linspace(0, 2*pi, N);
s = linspace(0, 2*pi, M)';
r = (2 + sin(s));
h = linspace(z1, z2, M)';
X = r*cos(t);
Y = r*sin(t);
Z = h*ones(size(t));
surf(X,Y,Z);

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删