Matlab基础

本文介绍了Matlab的基础语法,包括清除命令行窗口和工作区的命令,以及数据类型如数字、字符、矩阵的使用。通过实例展示了矩阵的创建、转置、求逆及生成随机数的方法。此外,还探讨了元胞数组的创建和操作,以及map容器的使用。文章深入浅出地讲解了数组的增删改查操作,并提到了stlread函数在处理3D模型数据时的应用。
摘要由CSDN通过智能技术生成

Matlab

clc : 清空命令行窗口

clear all : 清空工作区

Matlab的数据类型:

  • 数字

  • 字符和字符串

  • 矩阵

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

    A( : , 1:2)

    B = A’ % A的转置
    C = A % 将A矩阵拉长,一列一列的拉长
    D = inv(A) % A矩阵的逆
    E = zeros(10, 5, 3) % 创建全是0的10行5列三维矩阵

运行结果:
A =

 1     2     3
 4     5     6
 7     8     9

ans =

   1     2
   4     5
   7     8

B =

 1     4     7
 2     5     8
 3     6     9

C =

 1
 4
 7
 2
 5
 8
 3
 6
 9

警告: 矩阵接近奇异值,或者缩放错误。结果可能不准确。RCOND = 1.541976e-18。

D =

 1.0e+16 *

   -0.4504    0.9007   -0.4504
    0.9007   -1.8014    0.9007
   -0.4504    0.9007   -0.4504

E(:,:,1) =

 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0

E(:,:,2) =

 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0

E(:,:,3) =

 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0

rand生成均匀分布的伪随机数

randn生成标准正态分布的伪随机数

randi生成均匀分布的伪随机整数

E(:,:,1) = rand(10, 5)

E(:,:,2) = randi(5, 10, 5)

E(:,:,3) = randn(10, 5)

E(:,:,1) = rand(10, 5)

运行结果:
E(:,:,1) =

0.1192    0.9937    0.7720    0.4849    0.7549
0.9398    0.2187    0.9329    0.3935    0.2428
0.6456    0.1058    0.9727    0.6714    0.4424
0.4795    0.1097    0.1920    0.7413    0.6878
0.6393    0.0636    0.1389    0.5201    0.3592
0.5447    0.4046    0.6963    0.3477    0.7363
0.6473    0.4484    0.0938    0.1500    0.3947
0.5439    0.3658    0.5254    0.5861    0.6834
0.7210    0.7635    0.5303    0.2621    0.7040
0.5225    0.6279    0.8611    0.0445    0.4423

E(:,:,2) =

 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0

E(:,:,3) =

 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0

E(:,:,2) = randi(5, 10, 5)

运行结果:
E(:,:,1) =

 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0

E(:,:,2) =

 4     3     1     1     5
 3     4     1     3     1
 5     1     1     5     1
 3     4     4     5     1
 1     2     2     2     1
 1     1     3     2     4
 5     3     4     3     3
 3     1     3     4     1
 5     1     3     3     5
 2     2     3     2     4

E(:,:,3) =

 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0
 0     0     0     0     0

E(:,:,3) = randn(10, 5)

运行结果:

  • E(:,:,1) =

     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
    

    E(:,:,2) =

     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
    

    E(:,:,3) =

       -1.1933    1.0533   -1.4245    0.5411    0.8535
        0.6470   -0.7489    0.7174   -1.5409   -1.8530
       -0.3536   -0.9363   -0.7779   -0.2031   -0.2073
        0.0464   -1.2691    0.3160   -0.5000    0.2704
       -0.7929    0.4980    1.4065    0.3830   -0.6528
       -1.5505    2.7891    0.4011    0.4120    0.4772
        0.1716    0.7276    0.9297    0.4055   -0.0713
       -0.0621   -0.7731   -1.6058   -0.3638   -0.9383
        1.1990    0.8366    0.6615   -0.5993    0.1614
        0.8017   -1.1283    2.1385   -0.5896   -0.2682
    
  • 元胞数组:一种数组,可以包含不同数据类型的元素的数组,相当于C语言中的结构体。
    %% 元胞数组(可以储存:数字、、字符串、数组、元胞数组本身等)
    % 数组是只能储存数字或者字符的

a = [1, 5]
b = [2, 4, 3]
c = 'bilibili'
% 元胞数组的创建方式一:
A = {a, b, c}   % 元胞数组储存了a,b两个数组和一个字符串
% 元胞数组的创建方式二:
B = cell(1, 4)
% 元胞数组取值
% 取元胞数组A中第二个元素的值
% 使用花括号是取元胞数组里面的值
% 使用()是对元胞数组进行切割
A{2}    % 2 4 
A{1, 2} % 2 4 
A(1, 2) % 切割的是元胞数组
% 删除A的第二个元素
A(2) = []
  • map容器的使用
%% map容器的使用
weekMap = containers.Map({'Monday', 'Tuesday'},{1, 2});

% 查询
weekMap('Monday')

% 添加
weekMap('Friday') = 5;

% 检查map中的内容
keys(weekMap)
values(weekMap)
% 注意,返回的是元胞数组

% 连接两个map:
weekMap1 = containers.Map('Thursday', 4);
weekMap2 = [weekMap; weekMap1];  % 连接weekMap和weekMap1两个map
keys(weekMap2);

% 具有重复键名的Map对象的合并示例
m1 = containers.Map({1, 5, 8}, {'A', 'B', 'C'});
m2 = containers.Map({9, 8, 6}, {'X', 'Y', 'Z'});
m3 = [m1; m2];   %  分号是竖直串联,逗号是水平串联
keys(m3)
% ans =
% 
%   1×5 cell 数组
% 
%     {[1]}    {[5]}    {[6]}    {[8]}    {[9]}
values(m3)
% ans =
% 
%   1×5 cell 数组
% 
%     {'A'}    {'B'}    {'Z'}    {'Y'}    {'X'}
% 键按顺序排列,键值重复时,合并是后者覆盖前者

%% stlread的使用,以及法向量的获取
file = stlread('Test_Models/horse.stl');

F = faceNormal(file, 1);     % 获取索引值为1的三角面片的单位法向量
F = faceNormal(file);        % 获取所有三角面片的单位法向量

%% 数组的增删改查
% 查
A = [1, 2, 3; 4, 5, 6; 7, 8, 9]
A(2, 1)

% 改
A(2, 1) = 20 

% 增
b = [12, 23, 33]
[A; b]

% 转置
b'
[A, b']
% ans =
% 
%      1     2     3    12
%     20     5     6    23
%      7     8     9    33

% 将b插入A的第二行
[A(1, :); b; A(2:3, :)]         % 将b放在第一行后面的位置,A后面的行加在后面,就可以将b插入A数组的第二行了

% 删
% 删除第二行
% A(2, :)表示第二行的所有列":"表示从第几个到第几个
A(2,:) = []     % 给第二行赋值一个空的数组,那么第二行就会被删除

% 删除第二列
A(:, 2) = []    % 同样的给第二列赋空的数组

% size求数组各个维度的大小
size(A)

% length求维度最大的那一个
length(A)   
B = [1, 2, 3; 4, 5, 7; 8, 9, 11]    % 括号里的";"表示换行。
length(B)   % 最大的维度是3

% stlread的延伸
tic;
file = stlread('Test_Models/femur.stl');  
file.Points()   % 取出所有的点
file.ConnectivityList()     % 取出所有的索引值
toc

[TR,fileformat,attributes,solidID] = stlread('Test_Models/femur.stl');  % 返回 filename 的文件格式、属性(文件为二进制时)以及实体标识号(文件为文本时)
TR = stlread('Test_Models/金箔ASCII.stl');
triplot(TR);        % 输出三角剖分

  • 结构体

    结构体相当于python中的字典(set)有键值对。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值