MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。
为加强自身在使用matlab时编程的思维逻辑,所以记录下刷题过程中遇到的一些问题以及问题总结,欢迎各位一起探讨。
MATLAB Cody是MathWorks官方的通关形式题库,问题丰富,涉及面广,Cody Challenge是面向新手的题库,由易到难,帮助大家掌握基础,并感受matlab矩阵化运算的特点。
目录
刷题前的准备
开始刷题
2021.3.14 天气阴
刷题前的准备
- 题库网址:https://ww2.mathworks.cn/matlabcentral/cody/problems
- 需要注册一个账户:刷题时需要注册账户,但由于我的学校并没有购买激活秘钥,于是我询问了一些同学,他们学校也没有激活秘钥。后来我的解决方案,就是直接进行账户注册,在使用激活秘钥时,可以使用别的学校的秘钥(微信搜索“MATLAB激活秘钥”可以找到一些学校的秘钥),然后就注册成功了可以刷题了,哈哈
开始刷题
2021.3.14 天气阴
题目1:给定变量x作为输入,将其乘以2并将结果放入y中。
示例:
Input x = 2
Output y is 4
Input x = 17
Output y is 34
解决:
function y= times2(x)
y=2*x;
end
思考:难度较低,主要考察函数的基本使用,以及数值计算的基本规则。
题目2:通过将元素括在方括号中来创建矢量,如:x =[1 2 3 4] 或x =[1,2,3,4]。创建向量 x = [1 2 3 4 5 6 7 8 9 10],寻找一种更快的方法。
function x=oneToTen
x=1:10;
end
思考:难度较低,需要了解如何能简化矩阵的表达。
2021.3.15 天气阴
题目3:找到输入向量的所有数字的总和
示例:
Input x = [1 2 3 5]
Output y is 11
Input x = [42 -1]
Output y is 41
解决:
function y = vecsum(x)
y = sum(x)
end
思考:主要考察矩阵元素相加的函数sum的使用,A=sum(B,1)表示每列相加,A=sum(B,2)表示每行相加。
题目4:制作一个棋盘格矩阵
示例:
Input n = 5
Output a is [1 0 1 0 1
0 1 0 1 0
1 0 1 0 1
0 1 0 1 0
1 0 1 0 1]
解决:
function a = checkerboard(n)
a = ones(n);
a(2:2:n,1:2:n) = 0;
a(1:2:n,2:2:n) = 0;
end
思考:由于是矩阵元素1比较多,所以利用ones函数构造全1的函数,然后,发现矩阵元素的分布具有一定的规律,令其等于0即可。
2021.3.17 天气阴
题目5:三角数问题
示例:
6 = 1 + 2 + 3
Input n = 4
Output t is 10
解决:
我的代码:
function t = triangle(n)
t=0;
for i=1:n
t0=i;
t=t0+t;
end
end
别人的代码:
function t = triangle(n)
t = sum(1:n)
end
思考:对此类叠加问题,我的第一想法就是循环叠加。但要改掉这一问题,要多使用已有函数,少用for循环,降低时间复杂度。
题目6:选择向量的任何其他元素
示例:
Input x=[1 3 2 4 3 5]
output y is [1 2 3 ]
Input x=[5 9 3 2 2 0 -1]
output y is [5 3 2 -1]
解决:
function y= everyOther(x)
y=x(1:2:end);
end
思考:数组矩阵(向量)的选择和创建。
题目7:去除向量的某列
示例:
Input A =[1 2 3 ;
4 5 6 ];
n=2
Output B=[1 3;
4 6];
解决:
function B=column_removal(A,n)
A(:,n)=[];
B=A;
end
思考:需要知道矩阵行列的删除方式,即只需要将该行或者该列赋予一个空矩阵[]即可。
题目8:两个数相加
解决:
function c=add_two_numbers(a,b)
c=a+b;
end
思考:比较简单,略。
题目9: