matlab与机器学习(第1天)

0 在线MATLAB编程网站

在线MATLAB编程网站:https://octave-online.net/

1. 清空环境变量及命令

ctrl+T		%注释
Ctrl+R		%取消注释
clear all   % 清除Workspace中的所有变量
clc         % 清除Command Window中的所有命令

2.运行程序

在编辑m文件的上面有个绿色的三角,点它可以运行程序
也可以选中所有的代码,点鼠标右键,选evaluate selection来运行

3.矩阵运算

A = [1 2 3; 4 5 2; 3 2 7]
B = A'		#矩阵的转置,即行与列互换
C = A(:)		#将行向量转换为列向量
D = inv(A)		# A的逆矩阵
A * D			# 为单位矩阵


E = zeros(10,5,3)   # 表示3个10*5的矩阵
E(:,:,1) = rand(10,5)	#将E(:,:,1)置为随机生成的10行5列的数组,rand是0-1的均匀随机分布,而randn是均值为0方差为1的正态分布
E(:,:,2) = randi(5, 10,5)	#将E(:,:,1)置为随机生成的10行5列的数组,最大值为5r = randi(imax,m,n).
E(:,:,3) = randn(10,5)

4 元包数组

# 和上面的三维数组是不同,三维数组的每一个子数组的维度都是一样的,元包数组可以不同。
A = cell(1, 6)# 初始化,把A初始化为一个n行m列的空cell类型数据。
A{2} = eye(3)	#对第二个矩阵进行赋值,返回的是单位矩阵
A{5} = magic(5) #用于产生魔方矩阵,它的每行、列以及对角线的数之和相等
B = A{5}

5 结构体

books = struct('name',{{'Machine Learning','Data Mining'}},'price',[30 40])
books.name
books.name(1)
books.name{1}

6 矩阵的基本操作

A = [1 2 3 5 8 5 4 6]
B = 1:2:9 # 生成从1到9间隔为2数
C = repmat(B, 3, 1) # 复制B,注意,它是将B作为一个整体进行复制。将B转换为三行一列。repmat(A, m, n) %将矩阵A复制m*n块,即B由m*n块A平铺而成
D = ones(2, 4)	# 产生全1矩阵

7 矩阵的四则运算

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的列数必须与矩阵b的行数相同,B'表示矩阵的转置
F = A .* B	# 表示点乘,矩阵A与矩阵B的各个元素分别相乘得到F
G = A / B     % 等价于 G*B = A  G*B*pinv(B)=A*pin(B)  G=A*pin(B),pin(B)	# 表示B的逆矩阵
H = A ./ B 	# 点除

8 矩阵的下标索引

A = magic(5)
B = A(2,3)
C = A(3,:)
D = A(:,4)
[m, n] = find(A > 20)# 注意:数组在找的时候是从第一列从上到下开始

9 MATLAB逻辑与流程控制

一共四种方式

  • 第一种: if … else … end
A = rand(1,10) # 随机产生1行10列0到1的数
limit = 0.75;

B = (A > limit);   % B is a vector of logical values。B为01的数组
% all函数:检测矩阵中是否全为非零元素,如果是,则返回1,否则,返回0% any函数:检测矩阵中是否有非零元素,如果有,则返回1,否则,返回0if any(B)
  fprintf('Indices of values > %4.2f: \n', limit);
  disp(find(B))
else
  disp('All values are below the limit.')
  #disp('你要输出的字符串'),
end
  • 第二种: for … end
k = 10;
hilbert = zeros(k,k);      % Preallocate matrix,生成一个全0矩阵

for m = 1:k
    for n = 1:k
        hilbert(m,n) = 1/(m+n -1);
    end
end
hilbert

-第三种: while … else

n = 1;
nFactorial = 1;
while nFactorial < 1e100	%1e100表示10100次方
    n = n + 1;
    nFactorial = nFactorial * n;
end
n

factorial(69)	%factorial为阶乘函数,即69的阶乘
factorial(70)

prod(1:69)	% prod是连乘的形式,即从1乘到69
prod(1:70)
  • 第四种:switch … case … end
    myScript.m文件
mynumber = input('Enter a number:');

switch mynumber
    case -1
        disp('negative one');
    case 0
        disp('zero');
    case 1
        disp('positive one');
    otherwise
        disp('other value');
end

10 Matlab脚本文件和函数文件

第一种:脚本文件
定义:可以直接执行的文件就是脚本文件
myScript.m文件

** 第二种:函数文件**
区别:不能直接运行,需要输入一定的参数才能执行
myScript.m

mynumber = input('Enter a number:');
output = myFunction(mynumber)

myFunction.m

function output=myFuction(input)

switch mynumber
    case -1
        disp('negative one');
    case 0
        disp('zero');
    case 1
        disp('positive one');
    otherwise
        disp('other value');
end

11 MATLAB基本绘图操作

参考网站:https://www.cnblogs.com/lihuidashen/p/3443735.html
1. 二维平面绘图

x = 0:0.01:2*pi;
y = sin(x);
figure
plot(x, y)
title('y = sin(x)')
xlabel('x')
ylabel('sin(x)')
% xlim([xl xr]);ylim([yl yr]);用于限定x轴y轴上线限制
xlim([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
% plotyy(X1,Y1,X2,Y2):以左、右不同纵轴绘制X1-Y1、X2-Y2两条曲线。
%[AX,H1,H2]=plotyy(...):返回AX中创建的两个坐标轴的句柄以及H1和H2中每个图形绘图对象的句柄。AX(1)为左侧轴, AX(2)为右侧轴。
[AX,H1,H2] = plotyy(x,y1,x,y2,'plot');
%get(a)表示可以得到a的所有对象
AX1=get(AX(1),'Ylabel')
% 设置左侧轴标签
set(AX1,'String','Slow Decay')
% 设置标签颜色
set(AX1,'color','b');

% 设置线条风格
set(H1,'LineStyle','--');
% 设置线条颜色
set(H1,'color','b');


set(get(AX(2),'Ylabel'),'String','Fast Decay')
set(H2,'LineStyle',':');
set(H2,'color','r');
xlabel('Time (\musec)')
title('Multiple Decay Rates')

%设置图例,legend() 有两个参数 Position 和来 FontSize 分别设置 图例位置源/大小, 字体zd大小
legend([H1,H2],{'y1 = 200*exp(-0.05*x).*sin(x)';'y2 = 0.8*exp(-0.5*x).*sin(10*x)'});

2. 三维立体绘图

t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
xlabel('sin(t)')
ylabel('cos(t)')
zlabel('t')
grid on
axis square

3. 图形的保存与导出

% (1) Edit → Copy Figure
% (2) Toolbar → Save
%写论文时要求图像格式不低于多少
% (3) print('-depsc','-tiff','-r300','picture1')
% 在写论文的时候常遇到单列排版和双列排版的问题,当双列排版时,如果像素宽度设置为400,发现图片不能完全显示。此时只能对图片进行缩小,会发现可以虽然能够完全显示了,但是图片中的文字出现模糊。如果像素宽度设置为200,发现能够很好的避免上述情况的发生。
% (4) File → Export Setup

12 MATLAB文件的导入

1. mat格式
注意:mat文件在默认的Windows资源管理器中是以Microsoft Access Table Shortcut (.mat)的形式存在的。此时,使用load命令就可以将其打开了。形式如下:
mat文件存在形式
在这里插入图片描述

% 将变量保存到生成的.mat文件中,也可以通过save('data.mat','a','b')的方式
save data.mat x y1 y2
clear all
% 加载.mat文件
load data.mat

2. txt格式
myfile.txt文件:包含一些字符串和数字
在这里插入图片描述
data.txt文件
在这里插入图片描述
方式一:

delimiterIn   = ' '; % 字符分隔符
headerlinesIn = 1;   % 文件头的行数
A = importdata('myfile.txt', delimiterIn, headerlinesIn);
A
data       = A.data
textdata   = A.textdata
colheaders = A.colheaders

方式二:

% 可将txt文件中的数据导入到矩阵中
M = importdata('myfile.txt');

S = M.data;
save 'data.txt' S -ascii
T = load('data.txt');

isequal(S, T)

3. xls格式

xlswrite('data.xls',S)
W = xlsread('data.xls');
isequal(S, W)

xlswrite('data.xlsx',S)
U = xlsread('data.xlsx');
isequal(S, U)

4. csv格式

csvwrite('data.csv',S)
V = csvread('data.csv');
isequal(S, V)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三少的笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值