MATLAB基础运算【8】:数据及图像类型、数学操作、查询

系列更新MATLAB各种运算和操作的说明。

本篇主要包括代数运算相关内容(可利用侧边目录直接定位):

  1. 数据类型及转换:如“num2str”、“eval”、“double”、“cell2struct”等
  2. 图像类型转换(灰度图、二值图、动画操作):“rgb2gray”、“im2bw”、“im2double”
  3. 生成对数间距点:“logspace”
  4. 取整操作:“fix”、“floor”、“ceil”、“round”
  5. 数值与符号计算阶乘:“factorial”、“sym”
  6. 命令查询:“help”、“lookfor”、“which”

前文:

MATLAB基础运算【1】:矩阵元素

MATLAB基础运算【2】:矩阵运算

MATLAB基础运算【3】:微积分运算

MATLAB基础运算【4】:图像绘制

MATLAB基础运算【5】:图像绘制学科专题

MATLAB基础运算【6】:插值拟合与数值微积分

MATLAB基础运算【7】:代数运算

1- 数据类型及转换:如“num2str”、“eval”、“double”、“cell2struct”等

        例1:clear; a=1, b=num2str(a), c=a>0, a= =b, a= =c, b= =c

        输出:

a=1
b=1
c=logical 1
ans=logical 1
ans=logical 1
ans=logical 1

        a为整数1,整型变量,b将a的值’1’转化为字符变量,c为布尔型,若a大于0则赋值1,否则赋值0。并比较abc三者两两间是否相等,答案是a与c相等,b与c、b与a不相等,这是因为a与c是相同整数值,而b为字符型,变量类型与ac不同,无法比较。

         

        例2:clear; fun='abs(x)', x=-2, eval(fun), double(fun)

        输出:

fun='abs(x)'
x=-1
ans=2
ans=97 98 115 40 120 41

        将-2的绝对值赋值给fun,fun的值是2。利用eval函数将fun转化作为字符串运行,于是fun变为’abx(x)’共六个字符,double函数输入字符串时输出对应的ASCII码,故而输出’abx(x)’的ASCII码。

        例3:

B1={1:9;' David Beckham '};
B2={180:-10:100; [100,80,75,;77,60,92;67 28 90;100 89 78]};
B=[B1, B2];
B{1,2}(8)
D=cell2struct(B,{'f1','f2'},2);
[a,b]=D.f1

        观察D和B的具体内容。

        输出:

ans=110
a=1 2 3 4 5 6 7 8 9
b='David Beckham'

        B[1,2](8) 代表B中第一行第二列中的第八个元素,第一行第二列指B2,第八个元素即180-10*(8-1)=110。

        B转化为结构体D,[a,b]=D.f1代表,[a,b]对应结构体中f1,即B1,参考B1形式知道a为1:9,b为David Beckham。

        Size(B)为2 2,因为size反应维数,B1和B2分别为两行,故而行列维数都为2。

2- 图像类型转换(灰度图、二值图、动画操作):“rgb2gray”、“im2bw”、“im2double”

例:读入图片后,

(a) 转换成灰度图保存。提示:rgb2gray

(b) 将灰度图读入,并转换成二值图(仅黑白两色)。提示:im2bw

(c) 将原彩色图片中的红色成分在10s内随时间逐渐减少至0,完成一个颜色渐变的动画并输出成AVI文件。

原图:

转换为灰度代码(需要注意图片文件位置):

IM=imread('hearthstone.png'); % 读取图片
IM=rgb2gray(IM); % 转换为灰度图
imwrite(IM,'hsgray.png'); % 将新图片存入文件夹

效果:

转换为二值图:

IM=imread('hsgray.png'); % 读取图片
IM=im2bw(IM); % 转换为二值图
imwrite(IM,'hsbw.png'); % 将新图片存入文件夹

效果:

红色成分在10s内随时间逐渐减少至0,形成动画:

IM = imread('hearthstone.png'); % 读取图片文件
IM_double = im2double(IM); % 将图片数据转换为双精度浮点数
v = VideoWriter('myVideo.avi'); % 创建视频写入器对象
v.FrameRate = 10; % 设置视频的帧率为10帧/秒
open(v); % 打开视频写入器
for t = 0:100  % 遍历0到100的整数序列
    R(:,:,1) = (IM(:,:,1) .* (100 - t)) ./ 100; % 计算红色通道的值,随着t的增加而逐渐减小
    frame = R;  % 将当前计算得到的红色通道赋值给frame变量
    writeVideo(v, frame); % 将frame写入视频文件
end
close(v); % 关闭视频写入器,释放资源

(将avi转为gif后)效果:

ps:炉石要回归啦!=U=

3- 生成对数间距点:“logspace”

        例:logspace(3,4,5)

        

        在10^3和10^4之间生成五个对数间距点并组成向量

4- 取整操作:“fix”、“floor”、“ceil”、“round”

        例1:fix(3.5), floor(3.5), ceil(3.5), round(3.5)

        输出:

3,3,4,4

        分别对小数3.5:向0取整,向下取整,向上取整,四舍五入

         例2:fix(3.4), floor(3.4), ceil(3.4), round(3.4)

        输出:

3,3,4,3

        分别对小数3.4:向0取整,向下取整,向上取整,四舍五入

        例3:fix(-3.1), floor(-3.1), ceil(-3.1), round(-3.1)

        输出:

-3,-4,-3,-3

        分别对小数-3.1:向0取整,向下取整,向上取整,四舍五入

        例4:fix(-3.8), floor(-3.8), ceil(-3.8), round(-3.8)

        输出:

-3,-4,-3,-4

        分别对小数-3.8:向0取整,向下取整,向上取整,四舍五入

5- 数值与符号计算阶乘:“factorial”、“sym”

例:分别用数值和符号两种方法,计算365!,对比结果

命令行输入:

factorial(365), factorial(sym(365))

输出:

Inf,
25104128675558732292929443748812027705165520269876079766872595193901106138220937419666018009000254169376172314360982328660708071123369979853445367910653872383599704355532740937678091491429440864316046925074510134847025546014098005907965541041195496105311886173373435145517193282760847755882291690213539123479186274701519396808504940722607033001246328398800550487427999876690416973437861078185344667966871511049653888130136836199010529180056125844549488648617682915826347564148990984138067809999604687488146734837340699359838791124995957584538873616661533093253551256845056046388738129702951381151861413688922986510005440943943014699244112555755279140760492764253740250410391056421979003289600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

考察运算时间:

        符号运算可以得到具体结果,而直接运算超出了显示范围,会显示无穷。利用符号运算计算的更快。利用 length() 可以进一步查看结果的数量级。

6- 命令查询:“help”、“lookfor”、“which”

        help获取函数的帮助信息,帮助用户如何使用函数

        lookfor搜索带有关键字的词条,很可能获得很多词条

        which定位函数在计算机中的位置

        以‘abs’为例:

         (help)

        (lookfor)

        (which)

【本篇完】

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值