matlab版本:R2018a

1.向量的生成和运算

【练习】

(1) 使用 logspace( )创建 1~4 π 的有 10 个元素的行向量。

(2)使用linspace() 函数创建0~6之间的x坐标向量,绘制几条正弦曲线:

结果图:

【思考】

上述x向量如果采用冒号运算符应该如何生成?下面这种方法可行吗?
x = [0:6/100:6]

答:不可行,x = [0:6/100:6] 是将0~6区间分成100等份,也就是得到101个元素,如果要生成等同于x=linspace(0, 6)的x向量,应该采用x = [0: 6/99:6] 。

2. 矩阵的创建、引用和运算

(1) 矩阵的创建和引用

【思考】

(1)什么是标量、向量、矩阵、数组?
答:

  • 标量:单个数据;
  • 向量:一行或一列数据;
  • 矩阵:m行n列的二维数据;
  • 数组:mnp*……*q的多维数据

(2)四者之间的关系是什么?
答:标量是0维空间中的一个点,向量是一维空间中的一条线,矩阵是二维空间的一个面,数组是多维空间中的一个体。也就是说,向量是由标量组成的,矩阵是向量组成的,数组是矩阵组成的。矩阵和向量都是数组的特例。

(3)直接输入法创建矩阵的基本规则有哪些?
答:将矩阵的元素用中括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用逗号或空格分隔,不同行的元素之间用分号分隔。

(4)两个矩阵进行水平拼接时其维度应满足什么条件?
答: 行数相等

(5)两个矩阵进行垂直拼接时其维度应满足什么条件?
答: 列数相等

【练习】

使用函数法、拼接法、拼接函数法和变形函数法,按照要求创建以下矩阵:
A 为 3×4 的全 1 矩阵、B 为 3×3 的 0 矩阵、C 为 3×3 的单位阵、D 为 3×3 的魔方阵、E 由 C 和 D 纵向拼接而成、F 抽取 E 的 2~5 行元素生成、G 由 F 经变形为 3×4 的矩阵而得、以 G 为子矩阵用复制函数(repmat) 生成 6×8 的大矩阵 H 。

clear
A = ones(3, 4); % A 为 3×4 的全 1 矩阵
B = zeros(3); % B 为 3×3 的 0 矩阵
C = eye(3); % C 为 3×3 的单位阵
D = magic(3); % D 为 3×3 的魔方阵
E = [C;D] % E 由 C 和 D 纵向拼接而成,或:E = cat(1, C, D)
F = E(2:5,:) % F 抽取 E 的 2~5 行元素生成
G = reshape(F,3,4) % G 由 F 经变形为 3×4 的矩阵而得
H = repmat(G, 2)% 以 G 为子矩阵用复制函数(repmat)生成 6×8 的大矩阵 H




(2) 矩阵的运算

【思考】

(2)矩阵左除与右除的区别是什么?如何去记忆左除和右除?【提示】斜杠向左边倾斜就是左除,向右边倾斜就是右除。左除就是左边的数或矩阵作分母,右除就是右边的数或矩阵作分母。
答:右除:a/b表示矩阵a乘以矩阵b的逆。
左除:a\b表示矩阵a的逆乘以b。

(3)det(x)、rank(x)、inv(x), [v,d]=eig(x)、diag(x)、[q,r]=qr(x)、triu(x)和tril(x)等矩阵常用函数的功用分别是什么?
答:

  • det(x):计算方阵行列式
  • rank(x):求矩阵的秩
  • inv(x):求矩阵的逆阵,当det(x)不为0时才有结果
  • [v,d]=eig(x):计算矩阵的特征值和特征向量
  • diag(x):产生对角阵
  • [q,r]=qr(x):分解为一个正交矩阵Q和一个与X同阶的上三角矩阵R的乘积
  • triu(x):提取矩阵的上三角矩阵,其余元素补0
  • tril(x):提取矩阵下三角矩阵,其余元素补0

(4)矩阵元素的查找函数是什么?如何使用?
答:查找函数:find()可以找出非0元素的下标和值,也可以找出满足条件的下标和值。

用法举例:输入 find(a),可以查找出a数组所有非0元素的下标;
输入[i,j,k]=find(a),可以找出a矩阵非0元素的下标位置和值。

【练习】

(1) 用矩阵除法求下列方程组的解 x=[x1;x2;x3];

答:

clc, clear all
A = [6, 3, 4; -2, 5, 7; 8, -1, -3]
B = [3; -4; -7]
x = A\B % x = inv(A) * B


(2) 求矩阵的秩;
答:

rank(A)


(3)求矩阵的特征值与特征向量;
答:

[v, d]=eig(A)


(4)矩阵的乘幂与开方;
答:

A1 = A^2, A2 = sqrtm(A)


(5)矩阵的指数与对数;
答:

A3 = expm(A), A4 = logm(A)


(6) 矩阵的提取与翻转。
答:矩阵的提取(取右上三角)与翻转(逆时针转90度):

A5 = triu(A), A6 = rot90(A)

【课后练习】

利用magic()函数生成一个7*7的魔幻矩阵。试采用相应的函数分别计算其最大、最小和平均值,并找出其中大于40的元素的个数及其在矩阵中位置(坐标)。
答:

clear all, clc
A = magic(7) % 7*7的魔幻矩阵
B = max(max(A)) % 最大值 或:max(A(: ))
C = min(min(A)) % 最小值 或:min(A(: ))
D = mean(A(: )) % 平均值
sum(sum(A>40)) % 找出其中大于40的元素的个数 或:length(A(A>40))[row,col] = find(A>40) % 找出其中大于40的元素在矩阵中位置(坐标)




3. 多维数组的创建及运算

【思考】

(1)数组元素的引用方法有几种?分别是什么?
答:数组元素的引用方法有3种。

  • 下标法:A(i, j):其中i和j可以是一维向量、标量、“:”号或者“end”
  • 索引法:A(index):index可以是任意的数组,index的元素必须是正整数,且不大于numel(A),返回的是一个尺寸与index一样的数组
  • 布尔法:A(X):X是一个有0和1组成布尔型数据,且size(A)=size(X),对应位置为1则留下该数据,0则去掉,最后按A中的存储顺序,返回一个列向量。

(2)单下标法与多下标法的关系是什么?
答:单下标法:将MN的矩阵中的所有元素是按列的顺序排成一列,以1~MN号标记。
多下标法:按行和列读取元素。

hxx = magic(4) % 生成4*4矩阵
huo = hxx(5) % 单下标,按列存储,第5个数
xiao = hxx(2, 3) % 多下标,第2行第3列的数


(3)常见的数组翻转函数有哪些?各自的功用分别是什么?
答:

  • 矩阵的旋转:rot90(A,k):将矩阵A旋转90º的k倍,当k为1时可省略。
  • 矩阵的左右翻转:fliplr(A):将原矩阵的第一列和最后一列调换,第二列和倒数第二列调换,…,依次类推。
  • 矩阵的上下翻转:flipud(A)。

【练习】

创建一个三维数组A,然后用 reshape 函数重排为数组B,B为3行、2列、2 页。
答:

clc, clear all
A (:, :, 1) = [1, 3; 4, 2] % 第1页
A (:, :, 2) = [1, 2; 2, 1] % 第2页
A (:, :, 3) = [3, 5; 7, 1] % 第3页
B = reshape(A, [3, 2, 2]) % A重排为B,B 为 3 行、2 列、2 页



【课后练习】

(1)可否利用现有的MATLAB函数, 设计一个统一的新函数,可以实现直接求取任一数组中元素的总和、均值、中值,及其最大、最小值?

  • 任一数组的含义是指其数据类型和维数多少不受限制,维数尺度可以是标量(0D)、向量(1D)、矩阵(2D)、空间数组(3D)、四维数组(空间+时间,4D)等。
  • 从实用出发,可以要求数据类型限定在整数(int)和实数类型(float、double);
  • 可否做到?如何做到?
    答:函数文件:HXiaoxiao.m(创建函数)
function [X_sum, X_mean, X_median, X_max, X_min] = HXiaoxiao(Xiao)X_sum = max(Xiao(:)) % 总和X_mean = mean(Xiao(:)) % 均值X_median = median(Xiao(:)) % 中值X_max = max(Xiao(:)) % 最大值X_min = min(Xiao(:)) % 最小值
end

脚本文件:(调用函数)
整数(int)

clc, clear all
Huo(:, :, 1) = [1, 2; 3, 4] % 数组第1页
Huo(:, :, 2) = [9, 8; 7, 6] % 数组第2页
Huo(:, :, 3) = [3, 5; 7, 1] % 数组第3页
HXiaoxiao(Huo) % 调用函数

实数类型(float、double)

xiao(:, :, 1) = [1.4, 2.2; 3.6, 4.8] % 数组第1页
xiao(:, :, 2) = [9.1, 8.3; 7.5, 6.7] % 数组第2页
xiao(:, :, 3) = [3.33, 5.55; 7.77, 1.11] % 数组第3页
HXiaoxiao(xiao) % 调用函数

(2)给定一张文件名为“tower.jpg”的图像(如下图),试采用fliplr()和flipud() 实现图像画面的左右和上下翻转。
提示:每张彩色图像数据都是一个3维数组,可以采用 imread() 函数从图像文件中获取图像数据 ,然后利用上述函数实现画面翻转; 翻转的效果可以采用 imshow()函数查看。

答:

clc, clear all
Tower = imread('tower.jpg'); % 读取图片,存储为矩阵
lr_tw = fliplr(Tower); % 左右翻转
imshow(lr_tw) % 显示左右翻转效果
ud_tw = flipud(Tower); % 上下翻转
imshow(ud_tw) % 显示上下翻转效果

4. 字符串的操作

【练习】

用 char( )和向量生成的方法创建如下字符串 AaBbCcDd…XxYyZz。
提示:A 和 a 的 ASCII 码分别为 65,97。

Huo = [65:90];
Xiao = [97:122];
Hxx = [Huo; Xiao]
char(Hxx(:)')

参考:

  1. 标量、向量、矩阵、张量之间的区别和联系

  2. MATLAB基本函数整理

  3. Matlab中数组元素引用——三种方法

  4. 怎样用单下标和全下标取一个数组中的元素

  5. matlab考试重点详解

【Matlab作业】MATLAB语言基础相关推荐

  1. matlab无c语言基础自学,matlab及c语言在潮流计算运用【毕设、无需降重】.pdf

    Matlab 及 C 语言在潮流计算中的运用 陈洲 (三峡大学电气信息学院 班) 摘要 :潮流计算是研究电力系统稳态运行情况的一种基本电气计算,常规 潮流计算的任务是根据给定的运行条件和网路结构确定整 ...

  2. matlab学习--语言基础

    语言基础 语法,数组索引和操作,数据类型,运算符 MATLAB是"矩阵实验室"的缩写.虽然其他编程语言通常一次用数字一个工作,MATLAB ®对整个矩阵和数组操作.语言基础包括基本 ...

  3. matlab语言实验二,实验二 MATLAB语言基础

    实验二 MATLAB 语言基础 一.实验目的 基本掌握 MATLAB 向量.矩阵.数组的生成及其基本运算(区分数组运算和矩阵运算).常用的数学函数.了解字符串的操作. 二.实验内容 (1) 向量的生成 ...

  4. MATLAB基础教程(2) 语言基础知识

    本教程主要讲到MATLAB语法.运算符.数据类型.数组索引及处理等等语言基础知识.大概可分四大部分: (1)输入命令 输入命令- MATLAB & Simulink- MathWorks 中国 ...

  5. Matlab程序设计语言基础

    2.1Matlab程序设计语言基础 1.若i和j不改写,它们将表示虚数的.但是在Matlab程序的设计过程中,经常使用i或者j作为循环的变量.如果涉及到虚数运算,应当先确认这两个量有没有被改写,如果被 ...

  6. python和matlab的区别_我为什么选择Python,不是Matlab和R语言呢?

    做数据分析.科学计算等离不开工具.语言的使用,目前最流行的数据语言,无非是MATLAB,R语言,Python这三种语言,但今天大圣众包(www.dashengzb.cn)小编简单总结了python语言 ...

  7. 数值分析matlab实验报告,数值分析第一次作业matlab实验报告.doc

    数值分析第一次作业matlab实验报告.doc 几种线性方程组迭代算法的MATLAB实现和性能比较用有限差分方法(五点差分格式)求解正方形域上的Poisson方程边值问题用MATLAB语言编写算法程序 ...

  8. matlab电机外特性曲线,电机大作业(MATLAB仿真,电机特性曲线).doc

    电机大作业(MATLAB仿真,电机特性曲线).doc 电机电机大作业大作业 专业班级电气 XXXX 姓 名XXX 学 号XXX 指导老师张 威 一.研究课题(来源教材习题一.研究课题(来源教材习题 4 ...

  9. 炉温曲线系统MATLAB仿真,MATLAB作业——工业炉温控制系统为例教程.doc

    控制工程基础大作业 MATLAB软件应用 2016年秋季学期 专业名称:机械设计制造及其自动化专业 班 级: 姓 名: Sun Light Tomorrow 学 号: 授课教师: 成 绩: 一.教学目 ...

  10. matlab编程是用c语言吗,matlab调用c语言编程.doc

    实用标准文案 精彩文档 matlab与C语言混合编程 用C编写mex程序??大家都知道,matlab是一种解释型的编程环境,也就是说,跟以前的basic一样,是读一句执行一句的.这样做可以很方便的实现 ...

最新文章

  1. mybatis 操作动态表+动态字段+存储过程
  2. Could not find qmake configuration file解决
  3. 前端学习(2748):uniapp创建项目和演示
  4. FreeMarker笔记 前言第1章 入门
  5. Java——多线程使用详解
  6. java struts 读取文件,Struts中读写文件的路径问题
  7. python 计算机程序设计-某高校计算机编程教授教你如何快速入门python,一文带你进入编程...
  8. Hadoop:Hadoop单机伪分布式的安装和配置
  9. linux下如何部署php,linux如何部署php
  10. gsoap创建webservice服务简单教程
  11. 把docx格式的word文档转换为txt文件
  12. matlab相机标定工具箱讲解,matlab 相机标定工具箱
  13. rebase操作步骤
  14. 数字生态大会上,云鼎实验室介绍了这些重要成果
  15. excel中每三行取一个数值
  16. c语言的编写程序--最简单的算术题
  17. 分享一个下载jar包的网站
  18. 科研学术的写作环境搭配(LaTeX+VSCode+Sumatra PDF/Skim)Win/Mac通用
  19. 数项级数的狄利克雷判别法
  20. 初学Silverlight,用它写了一个小游戏“宝石迷阵”

热门文章

  1. ubuntu16.04安装破解matlab2016详细教程
  2. [转]Mysql在大型网站的应用架构演变
  3. 优酷1080P的KUX视频如何快速转换成MP4格式 1
  4. 认知无线电网络的服务质量——蜻蜓算法的应用(Matlab代码实现)
  5. 对接腾讯云及时通讯总结
  6. 分布式调度问题及解决方案
  7. 二、BLDC矢量控制基础知识:SVPWM原理
  8. java rgb to yuv420_RGB to YUV420转换
  9. java 生成uuid
  10. DOS下安装WinXP方法