初学数模-MATLAB Quick Start! Part I

MATLAB这个语言灰常牛B大家都知道,封装性良好且支持混合编程。比如...

OK,现在我们打开MATLAB

Hint: 官方帮助文档很给力!

在MATLAB程序中,由于矩阵运算的重要,我们可以理解为“一切变量皆向量”。

学习语言时,许多时候我们都从Hello World开始,在MATLAB中,这一个程序是这样的:

disp(‘Hello World!‘);

恩,确实只需要一行...

按你胃(Anyway),我们还可以给一个变量赋值

a = 2

还可以让给一个变量赋值为向量

a = [1 2 3 4]

然后,再试一下矩阵

a = [1 2 3; 4 5 6; 7 8 10]

Hint:试一试这些命令,看看程序返回的是什么,再在末尾加上分号(;)试一试!

工作区:当前在工作区(workspace)可用的变量叫做Workspace Varibles。比如,我们运行这两条命令:

A = magic(4);
B = rand(3,5,2);

然后,你就可以在workspace看到它们

另外,我们可以随时使用whos命令来查看当前变量的属性

还可以这样。。

MATLAB运算符:在程序中的加减乘除还是用我们熟悉的+、-、*、/,不过在MATLAB中还有一个“左除”,即\,有A\B = B/A。

矩阵乘除运算直接可以用(*/\)这三个符号运算,另外还有点乘(.*)符号表示对应位置相乘,点除、点方(.^n)同理。

不妨自己试一下 B = A.*A

输出格式:试一试输入format long命令,再输入C = B * inv(B)。再把long换成short再试一下

级联:即把两个矩阵连接起来,一般有两种方式——横向(C = [A,B])和纵向(C = [A;B])两种方式

注释:打一个百分号,在这一行后面写注释即可

:虚部用i或j表示即可,如:

c = [3+4i, 4+3j; -i, 10j]

矩阵元素的索引:比如A是一个4*4的矩阵,MATLAB提供了两种索引方法:一是A(行,列),如A(4,2)表示A中第4行第2列的元素;二是A(index),其中index是按列向下数(和C/C++的按行从左往右刚好相反),如A(3)表示第一列第三行的元素,A(8)表示第4行第2列的元素

Hint:试一试越界的index(如A(17)和A(5,3)),会有什么后果?

那么要同时取几行或几列,要怎么做呢?

这时可以使用冒号:如A(1:3,2)就是矩阵A的1-3行第二列的元素;A(3,:)是矩阵A第三行

冒号还可以这样用:

start:step:end

如D = 0:10:100运行后,D = [0,10,20,30,40,50,60,70,80,90,100]

保存变量到文件:save命令,以.mat为后缀即可,如 save myfile.mat

从文件载入变量:load命令,如load myfile.mat

如何清空:clear命令清空变量,clc命令清空执行过的命令

字符串:MATLAB中的字符串操作和C/C++中类似(就连字符串处理函数的取名也和C/C++差不多。。),这里推荐这篇博文:http://www.cnblogs.com/emanlee/archive/2012/09/13/2683912.html

和普通变量一样,字符串也是“向量”,因此也可以级联。具体命令为:比如此时b = ‘tencent‘,执行a = [‘str‘,b];a就变为‘strtencent‘。

f = 71;
c = (f-32)/1.8;
tempText = [‘Temperature is ‘,num2str(c),‘C‘]

其中num2str函数可以把数字转化成字符串形式。

接下来,我们来看看如何绘制2D和3D的图像吧!

    2-D作图利器--plot函数: 先来看个例子,如何绘制y=sin(x)的图像

x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)

    这时候就可以看到图像了。然后可以加上这些命令美化一下

xlabel(‘x‘)
ylabel(‘sin(x)‘)
title(‘Plot of the Sine Function‘)

Hint:试一下将plot(x,y)改为plot(x,y,‘r--‘)绘制出的图像!

如果要在一张图上绘制多条曲线,则可以用hold on命令

x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)
hold on %继续在这个Figure上作图
z = cos(x);
plot(x,z,‘r--‘)
xlabel(‘x‘)
title(‘Plot of the Sine and Cosine Function‘)
legend(‘sin‘,‘cos‘)

3-D作图利器--surf/mesh函数

3D图像可以用meshgrid函数做一个平面,再根据函数方程作图;也可以用参数方程作图。

%做 z=x*e^(-x^2-y^2) 的图像
[X,Y] = meshgrid(-2:.2:2);    %构造平面
Z = X .* exp(-X.^2 - Y.^2);   %构造图形
subplot(2,1,1); surf(X,Y,Z); title(‘surf‘);  %使用surf作图
subplot(2,1,2); mesh(X,Y,Z); title(‘mesh‘);  %使用mesh作图

上边是用surf函数做的图,下面是用mesh函数做的图,喜欢哪个就用那个啦~

Hint:查阅一下MATLAB官方文档的subplot函数!

然后我们用参数方程做个图:

t = 0:pi/10:2*pi;
[X,Y,Z] = cylinder(4*cos(t));    %即p=4cost
subplot(2,2,1); mesh(X); title(‘X‘);
subplot(2,2,2); mesh(Y); title(‘Y‘);
subplot(2,2,3); mesh(Z); title(‘Z‘);
subplot(2,2,4); mesh(X,Y,Z); title(‘X,Y,Z‘);

MATLAB编程

在MATLAB中编辑文件(如果没有,自动创建.m文件):edit Calcmean

至于什么循环、条件分支语句,聪明的你肯定一看就能明白:

%Calcmean.m
%计算随机生成数的平均值
clear;            %清除工作区
nsamples = 5;
npoints = 50; 
k = 1;

while k<=nsamples  %循环
    iterationString = [‘Iteration #‘,int2str(k)];
    disp(iterationString)
    currentData = rand(npoints,1);
    sampleMean(k) = mean(currentData)    
    k = k+1;
end
%如果去掉 k = k+1; 一句,并把while一行换为for k = 1:nsamples,得到的结果是一样的

overallMean = mean(sampleMean)
if overallMean < .49
    disp(‘Mean is less than expected‘);
elseif overallMean > .51
    disp(‘Mean is greater than expected‘);
else
    disp(‘Mean is within the expected range‘);
end

按下工具条里面绿色的“Run”,就可以运行它了!(PS:感觉跟Python一样一样的!)

Hint:查阅一下官方文档对mean函数的介绍!

Hint:官方文档快速查阅命令有doc和help,如

doc mean
help mean

分别试一下吧!

不知不觉写了一下午,没想到我也能一口气写出3400字的博文,那么MATLAB Quick Start : Part I 就到这里吧!

参考文献:

[1]The MathWorks, Inc. MATLAB? Primer . 2015(24) : 2-31.

时间: 2024-08-25 23:15:09

初学数模-MATLAB Quick Start! Part I的相关文章

初学数模-MATLAB Quick Start! Part II

让我们先从一张图片说起: 这幅画是由德国大画家丢勒(Albrecht Dürer)所画,其中布满了数学符号.在右上方的窗户上,你会发现那是一个矩阵.我们就从这里开始. 那么,在这幅名画中出现的矩阵究竟有何神通呢? 其实,这个矩阵被叫做Magic Square,是因为他的每行每列.主对角线和副对角线数字之和全部相等,且都是(1+16)*2=34. (话说微博网红.艺术科普作家.广告狗顾爷还曾花了很大篇幅在<小顾聊绘画>里介绍丢勒大师,有兴趣的童鞋可以去翻翻,个人感觉挺好看的) 那我们就把它输入到

数模讲座笔记

数模讲座笔记 概述 97%的参赛队是中国人 奖项分为O奖,F奖,M奖(一等奖),H奖(二等奖),S奖(成功参赛奖) 评审 初审:只有两个评委,审阅时间很快,10min左右 初审对所有的队伍进行打分,会刷掉近一半的队伍,刷掉的队伍一般获S奖 终审:分三轮 一二轮:决定前20名进入第三轮,剩下的按排名获M奖,H奖 三轮:直接决定O奖或F奖,评奖很主观,详见PPT 论文技巧 资料搜索时 搜索相关文献,大数据相关题目可用爬虫之类的工具 文献综述 了解问题的背景:连续题?离散题?大数据?网络流?环境相关?

数模常用算法系列--整数线性规划(分枝定界法)、整数非线性规划(蒙特卡洛法)

整数线性规划求解----分枝定界法 什么是整数规划? ? 线性规划中的变量(部分或全部)限制为整数时,称为整数规划.若在线性规划模型中,变量限制为整数,则称为整数线性规划.目前所流行的求解整数规划的方法,往往只适用于整数线性规划.目前还没有一种方法能有效地求解一切整数规划. 整数规划的分类 - 变量全限制为整数时,称(完全)整数规划 - 变量部分限制为整数时,称混合整数规划 什么是分枝定界法 ? 原理如下: ? 设有最大化的整数规划问题A,与它相应的线性规划为问题B,从解问题B开始,若其最优解不

2019数模国赛总结

先说重点:我们组选择的是B题,第一问优化掉空气阻力,并且忘记给出最优决策下的高度(真的是遗憾,我们居然忘了这个),第三问给出思路和总的方程,未给定解的表达.第四问是给定了力,然后给出两种策略来考虑可行性.由于时间没有把握好,论文主体写成了,但是存在一些表述上的瑕疵. ? 如果看了这些话,你还对这篇博客感兴趣,那我们就继续. ? 选题:C→A→B→A→B→A.... ? 晚上题发下来,讨论一会儿,感觉A,B都有坑,就C还比较友好,问题是坑爹的,C没数据(知乎热搜,选C题的都在搜数据hhh...),

数模三天乐

我们学校有个很不错的历史传统,就是五一三天假会有一个大型的娱乐项目,"数模三天乐",简直把人爽得不行不行的.一般地说是"自愿报名",但是苦逼的数学系出身还有各种各样的原因吧,最终还是不得不报名打一把数模. 数模和ACM是两个完全不同的竞赛.从过程上和准备上讲,数模对于大家来说都是三天决定结果,但是ACM就不是5个小时的发挥决定结果了,毫不夸张地说,数模三天,ACM三年.从结果展现来讲,数模是论文优劣定胜负.可能你的成果或者你的答案和评委们手上的"最佳答案&

珍爱生命,远离数模

话说五天四夜的数学建模终于结束了... 珍爱生命,远离数模!哈哈~~ 其实对本次数模并没有抱太大希望,重在参与重在参与. 在实验室看见一组,两个男生意见不同,感觉很不愉快的样子:还有一组,组员都回去了就剩他一个人在默默地做,熬了两个晚上,论文还得自己写,也是蛮辛苦的了,队友说也不是我弄的,所以我也不懂,不知道咋写,那我就先回去了,好坑呀!其实我们小组一开始也挺不愉快的,三个人对题目的理解都不一样,我都无语了...作为一个team,一定得团结! 然后我发现,他们做事好认真啊,不过好像有点太较真了,

数模笔记:公平席位的分配问题

数模笔记:公平席位的分配问题 基础 案列 某展会,AB双方根据人数分配席位: 衡量公平的数量指标: p1/n1=p2/n2.此时对AB均公平. p1/n1>p2/n2.此时对A不公平,因为对A放来说,每个席位相对应的人数比率更大. 绝对不公平度 定义: p1/n1-p2/n2 = 对A的绝对不公平度 问题: /*情况1*/ p1=150, n1=10, p1 /n1=15 p2=100, n2=10, p2 /n2=10 /*情况2*/ p1=1050, n1=10, p1 /n1=105 p2

Fib数模n的循环节 ZOJ Problem Set - 3729 Arnold

Fib数模n的循环节 对于一个正整数n,我们求Fib数模n的循环节的长度的方法如下: (1)把n素因子分解,即 (2)分别计算Fib数模每个的循环节长度,假设长度分别是 (3)那么Fib模n的循环节长度 从上面三个步骤看来,貌似最困难的是第二步,那么我们如何求Fib模的循环节长度呢? 这里有一个优美的定理:Fib数模的最小循环节长度等于,其中表示Fib数模素数的最小循环节长度.可以看出我们现在最重要的就是求 对于求我们利用如下定理: 如果5是模的二次剩余,那么循环节的的长度是的因子,否则,循环节

数模手记 之 MATLAB-入门手记(施工中...)

MATLAB初用起来感觉就是面向矩阵加强版命令行程序,附加高级运算及2D/3D绘图....恩,是的,我就是这样想的= = 博主是个数学系的本科生,也要开始准备暑期的MCM了,虽然本科阶段会开数学软件的课,不过听说比较鸡肋,而且时间比较靠后,所以写一篇手记记录一下自学期间体会比较深刻或感觉比较实用的地方,权当分享和笔记,见笑,哈哈哈. 话说博主为了权衡MCM和ICPC两大竞赛也是费了不少功夫上知乎...... 后来只是觉得想做的事情还是得做啊,数学建模或许会改变我对数学一贯的看法,问了那么多人可能