MATLAB编程实例练习
算法题MATLAB实现
木星流火
爱好MATLAB编程、摄影,配图都是自己拍的 ·͜·˖
展开
-
【MATLAB编程实例练习】-(43)找出0的长度和位置
题目来源于Mathwork上的Cody,Problem 1779 - Oh Zero Zero Zero!!!你需要找到向量中是0的部分,然后找到这些零的长度和起始位置。。。例如:x = [1 2 3 4 5 6 7 8 9 0 0 0 0 0 0 0 0 0 9 8 7 6 5 4 3 2 1];%then the output is:LP = [9 10] %[Length Position]%Or another example:x = [1 0 3 49 3 2 232 3 0 0 0原创 2021-11-04 16:45:34 · 1006 阅读 · 0 评论 -
【MATLAB编程实例练习】-(42)斐波那契数列的分解
题目来源于Mathwork上的Cody,Problem 42340 - Fibonacci Decomposition.Every positive integer has a unique decomposition into nonconsecutive Fibonacci numbers f1+f2+ … Given a positive integer n, return these numbers.Return the vector f = [f1, f2, …] sorted from s原创 2021-10-27 10:42:16 · 486 阅读 · 0 评论 -
【MATLAB编程实例练习】-(41)标记变化幅度大的位置
题目来源于Mathwork上的Cody,Problem 729 - Flag largest magnitude swings as they occur.You have a phenomenon that produces strictly positive or negative results.delta = [1 -3 4 2 -1 6 -2 -7];Marching through this list from beginning to end, mark a value with -1原创 2021-10-25 13:46:44 · 217 阅读 · 0 评论 -
【MATLAB编程实例练习】-(40)画出“E”字形矩阵
题目来源于Mathwork上的Cody,Problem 44679-Draw ‘E’.Draw a x-by-x matrix ‘E’ using 1 and 0. (x is odd and bigger than 4)Example:x=5ans=[1 1 1 1 11 0 0 0 01 1 1 1 11 0 0 0 01 1 1 1 1]x=7ans=[1 1 1 1 1 1 11 0 0 0 0 0 01 0 0 0 0 0 01 1 1 1 1 1 11 0 0原创 2021-10-23 13:30:27 · 629 阅读 · 0 评论 -
【MATLAB编程实例练习】-(39)数字之和
题目来源于Mathwork上的Cody,Problem 20 - Summing digits.给定n,求构成2^n的数字之和。例如,输入n=7,则输出b=11,因为2^7=128,1+2+8=11。代码function b = sumDigits(n) b = 0; a=2^n; a_str=num2str(a); for i=1:length(a_str) b=b+str2double(a_str(i)); endend其它优秀代码function原创 2021-09-08 10:16:16 · 1609 阅读 · 0 评论 -
【MATLAB编程实例练习】-(38)找到将向量等分为两半的子集
题目来源于Mathwork上的Cody,Problem 660 - Find a subset that divides the vector into equal halves.Given a vector x, return the indices to elements that will sum to exactly half of the sum of all elements.Example:Input x = [1 2 3 4 5 6 7]Output xi = [1 6 7]原创 2021-09-07 14:08:37 · 213 阅读 · 0 评论 -
【MATLAB编程实例练习】-(37)移动0到顶端
题目来源于Mathwork上的Cody,Problem 112 - Remove the air bubbles.Given a matrix a, return a matrix b in which all the zeros have “bubbled” to the top. That is, any zeros in a given column should be moved to the top. The order of the remaining nonzero numbers in原创 2021-09-04 14:08:06 · 242 阅读 · 0 评论 -
【MATLAB编程实例练习】-(36)删除所有以“ain”结尾的单词
题目来源于Mathwork上的Cody,Problem 31 - Remove all the words that end with “ain”.Given the string s1, return the string s2 with the target characters removed.For example, givens1 = ‘the main event’your code would returns2 = ‘the event’Note the 2 spaces be原创 2021-09-03 15:19:00 · 172 阅读 · 0 评论 -
【MATLAB编程实例练习】-(35)判断点是否位于三角形内
题目来源于Mathwork上的Cody,Problem 558 - Is the Point in a Triangle?Check whether a point or multiple points is/are in a triangle with three cornersPoints = [x, y];Triangle = [x1, y1; x2, y2; x3, y3]Return true or false for each point tested.For example,in原创 2021-09-03 10:02:26 · 931 阅读 · 0 评论 -
【MATLAB编程实例练习】-(34)直角三角形边长问题
题目来源于Mathwork上的Cody,Problem 1103 - Right Triangle Side Lengths.If p is the perimeter of a right angle triangle with integral length sides, { a, b, c }, there are exactly three solutions for p = 120.{[20,48,52], [24,45,51], [30,40,50]}Given any value of原创 2021-09-02 16:58:40 · 1019 阅读 · 0 评论 -
【MATLAB编程实例练习】-(33)寻找数组最近的数(Nearest Numbers)
题目来源于Mathwork上的Cody,Problem 29 - Nearest Numbers.Given a row vector of numbers, find the indices of the two nearest numbers.Examples:[index1 index2] = nearestNumbers([2 5 3 10 0 -3.1])index1 =1index2 =3[index1 index2] = nearestNumbers([-40 14 22 1原创 2021-09-01 14:07:18 · 536 阅读 · 0 评论 -
【MATLAB编程实例练习】-(32)最长连续数(Longest run of consecutive numbers)
题目来源于Mathwork上的Cody,Problem 672 - Longest run of consecutive numbers.Given a vector a, find the number(s) that is/are repeated consecutively most often. For example, if you havea = [1 2 2 2 1 3 2 1 4 5 1]The answer would be 2, because it shows up three原创 2021-08-31 09:14:55 · 653 阅读 · 0 评论 -
【MATLAB编程实例练习】-(31)制作棋盘矩阵(Make a checkerboard matrix)
题目来源于Mathwork上的Cody,Problem 4 - Make a checkerboard matrix.Given an integer n, make an n-by-n matrix made up of alternating ones and zeros as shown below. The a(1,1) should be 1.Example:Input n = 5Output a is [1 0 1 0 10 1 0 1 01 0 1 0 10 1 0 1 0原创 2021-08-28 16:02:20 · 649 阅读 · 0 评论 -
【MATLAB编程实例练习】-(30)Knight‘s Tour Checker(马走日)
题目:来源于Mathwork上的Cody,Problem 96 - Knight’s Tour Checker,Given a matrix a, determine whether or not a legal knight’s tour is present. The knight’s tour always follows the pattern 1, 2, 3, … but it need not fill the entire matrix. Any unused squares contai原创 2021-07-09 08:55:20 · 347 阅读 · 0 评论 -
【MATLAB编程实例练习】-(29)数组中元素出现次数的计数
题目:来源于Mathwork上的Cody,Problem 55 - Counting Sequence,代码实现,function y = CountSeq(x)if length(x)==1 y=[1,x];else a=1;b=x(1);y=[]; for i=2:length(x) if x(i)==x(i-1) a=a+1; else y=[y,原创 2021-07-06 19:10:21 · 355 阅读 · 0 评论 -
【MATLAB编程实例练习】-(28)具有公约数的最长数组
题目:来源于Mathwork上的Cody,Problem 84 - Longest Divisor Run,想得比较复杂了,下面画个简图帮助理解下,代码,function [len,d] = divisor_run(a) for j=1:length(a)-1 D(1,j)=gcd(a(j),a(j+1)); end for i=2:length(a)-1原创 2021-07-05 22:07:39 · 131 阅读 · 0 评论 -
【MATLAB编程实例练习】-(27)子集之和
题目:来源于Mathwork上的Cody,Problem 43. Subset Sum,我主要使用nchoosek函数生成各种组合,然后借助sum函数寻找与n相等的组合。代码如下,function ind = subset_sum(v,n) index=1:1:length(v); ind=[]; if sum(v==n)>0 ind=index(v==n); end if isempty(ind) for i=len原创 2021-07-04 14:32:24 · 307 阅读 · 0 评论 -
【MATLAB编程实例练习】-(26)靶心矩阵的生成
题目:来源于Mathwork上的Cody,Problem 18 - Bullseye Matrix,我是采用从外圈到内圈逐渐生成的方式,以 n=5 为例,第一次循环,生成 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3第二次循环,生成原创 2021-07-04 10:16:35 · 339 阅读 · 0 评论 -
【MATLAB编程实例练习】-(25)在数组中寻找离给定数最近的数
题目:来源于Mathwork上的Cody,Problem 51610 - Find the nearest value to the given one,该题主要考察数组与标量的算术运算、min函数、数组元素的访问,function y = nearest_value(vec,val) [M,I]=min(abs(vec-val)); y = vec(I);end测试,nearest_value([17 7 11 10 12 4],9)ans = 10...原创 2021-07-03 23:04:32 · 592 阅读 · 0 评论 -
【MATLAB编程实例练习】-(24)元胞cell数组乘法的实现
题目:来源于Mathwork上的Cody,Problem 44245,Cell Operator *,实现的过程比较简单,使用了repmat函数。函数构造如下,function out_A = m_times(A, n)%STAY HOME, STAY SAFE%WEAR A MASKif length(n)==1 N=[1,n];else N=n;endout_A=repmat(A,N);end测试如下, m_times({2,3},2)ans =原创 2021-07-03 22:38:46 · 2884 阅读 · 0 评论 -
【MATLAB编程实例练习】-(23)使用MATLAB操作Excel —— 合并两个Excel的信息
(一)合并两个Excel的信息描述:假设两个表格分别为某些产品的生产量和销售量流水信息,如图,尝试将两个表格合并,即将对应同一产品的生产量和销售量合并在同一行;且产品名称这一列,不能有重复的产品名称。第一步:读取生产量、销售量数据,[save_name,save_path] = uigetfile('*.*','选择生产量数据');Data_produce=readtable(fullfile(save_path,save_name));[save_name,save_path] =原创 2020-12-20 21:14:41 · 2790 阅读 · 0 评论 -
【MATLAB编程实例练习】-(22)合并排序数组
1.问题描述将两个升序的整数数组A和B合并,形成新数组,新数组也保持升序。2.问题示例输入A = [1,3,5,7], B = [5 6 7 8], 合并后数组为 [1,3,5,5,6,7,7,8].3.代码实现%合并排序数组A = [1,3,5,7];B = [5 6 7 8];i = 1;j = 1;C = [];while i<=length(A) && j<=length(B) %i和j代表取元素的位置 if A(i原创 2020-12-18 23:27:28 · 1128 阅读 · 1 评论 -
【MATLAB编程实例练习】-(21)两数之和
1.题目题目链接:https://leetcode-cn.com/problems/two-sum/描述:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数。2.步骤(1)求目标值与数组的差;(2)求该差值与原数组的交集,即为所求的答案;(3)排序;(4)取出所有的数组对。3.代码clearclcnums = [2, 7, 11, 15, 4, 5];target = 9;d = target - nums;%目标值与数组的差an原创 2020-07-12 21:36:08 · 1451 阅读 · 0 评论 -
【MATLAB编程实例练习】-(20)动态画出心形图案并保存gif动图
步骤:(1)生成心形曲线数据,根据小红心的大小从曲线数据中提取适当个数的数据点,作为放置小红心位置的定位点(注:测试发现提取数据点过密的情况下,会导致相互重叠的小红心无法显示,哪位懂得解决方法请告知下,谢谢),保存下来;(2) imread读取小红心图片;(3)使用mapminmax将提取的小红心定位点的横纵坐标归一化到画布;(4)设置画布格式;(5)使用for循环画出小红心,将每个小虹心保存在emo_love.gif里。代码如下:load('EMO_LOVE.mat');img = imr原创 2020-07-09 23:41:52 · 2209 阅读 · 2 评论 -
【MATLAB编程实例练习】-(19)排列组合问题(回溯法)
题目: 有两个数组a1=[1 2 3 4],a2=[5 6],想要生成一个新数组b(元素个数为奇数),其中奇数元素从a2中选取,偶数元素从a1中选取,当a2中元素选取完后就停止选取,以这种方式生成所有可能的排列组合,得到数组b。思路:结束条件为:生成数组b的大小已经达到要求,需要一个if判断;选择方法为:按题目要求偶数元素从a1中选取,奇数元素从a2中选取,因此需要一个if判断来决定当前需要生成的数是位于b的奇数位还是偶数位;原创 2020-06-25 07:09:32 · 1541 阅读 · 0 评论 -
【MATLAB编程实例练习】-(18)已知三维坐标画出三维曲面图
代码及说明:clear%x、y 和 v 是包含分散(非均匀)样本点和数据的向量x = rand(1,100);y = rand(1,100);v = x.^2+2*y.^2-x+y-2.*x.*y;%定义一个规则网格并在该网格上插入散点数据。[xq,yq] = meshgrid(linspace(min(x),max(x)),linspace(min(y),max(y)));vq = griddata(x,y,v,xq,yq);%将网格数据绘制为网格,将散点数据绘制为点。mesh(x原创 2020-06-24 14:31:01 · 6485 阅读 · 1 评论 -
【MATLAB编程实例练习】-(17)绘制含不等式的三维图形
需绘制的三维图形方程如下:实现代码:clearclc[x,y] = meshgrid(0:0.01:2);z = -x.^2-y.^2+2*y+2*x.*y-x;z(x+y>3) = NaN;z(x>y) = NaN;mesh(x,y,z);结果:原创 2020-06-23 11:43:05 · 5450 阅读 · 0 评论 -
【MATLAB编程实例练习】-(16)斐波那契数列问题
题目描述: Fibonacci数列是这样定义的: F(1) = 0,F(2) = 1 对于任意 i >2: F(i) = F(i-1) + F(i-2).因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, …,在Fibonacci数列中的数我们称为Fib原创 2020-06-22 08:54:33 · 3744 阅读 · 0 评论 -
【MATLAB编程实例练习】-(15)红绿色方块染色问题
题目描述:&emsp有一些红色和绿色的方块,从左到右排成一行。接下来你可以用红色或绿色对任意一个方块进行染色,使方块原有的颜色被覆盖掉。为了使在完成所有的染色操作后,红色方块都比绿色方块更靠近左侧,问至少需染几个方块。代码如下:%动态规划blocks = input('输入方块颜色的字符串:');%dp的初始值为所有红色块都位于绿色块右侧时,需染涂的方块个数dp(1) = sum(blocks=='R');for i = 1:length(blocks) if b原创 2020-06-21 12:03:52 · 1045 阅读 · 0 评论 -
【MATLAB编程实例练习】-(14)满二叉树的根节点寻找问题
题目描述:满二叉树的每个点的坐标规定如图所示,如给定两个点A和B,请找出A点和B点所有的公共根节点。代码如下:主函数% 满二叉树寻找两点的共同根节点clear allglobal A flagA = [];flag = 0;point_1 = input('输入第一个点位置:');n = point_1(1);m = point_1(2);findroot(n,m);point_2 = input('输入第二个点位置:');n = point_2(1);m = point_2原创 2020-06-20 23:30:39 · 478 阅读 · 0 评论 -
【MATLAB编程实例练习】-(13)分苹果
题目描述:n 只牛坐在一起,每只牛拥有 ai 个苹果,现在你要在它们之间转移苹果,使得最后所有牛拥有的苹果数都相同,但每一次,你只能从一只牛身上拿走恰好两个苹果到另一只牛身上,问最少需要移动多少次可以平分苹果。解法1:clearclcclose allarray = input('请输入每头牛所拥有的苹果个数:');n = length(array);avr = sum(array...原创 2020-03-06 16:38:40 · 552 阅读 · 0 评论 -
【MATLAB编程实例练习】-(12)俄罗斯方块
题目描述:小易有一个古老的游戏机,上面有着经典的游戏俄罗斯方块。因为它比较古老,所以规则和一般的俄罗斯方块不同。荧幕上一共有 n 列,每次都会有一个 1 x 1 的方块随机落下,在同一列中,后落下的方块会叠在先前的方块之上,当一整行方块都被占满时,这一行会被消去,并得到1分。有一天,小易又开了一局游戏,当玩到第 m 个方块落下时他觉得太无聊就关掉了,小易希望你告诉他这局游戏他获得的分数。解...原创 2020-03-02 12:15:04 · 1050 阅读 · 0 评论 -
【MATLAB编程实例练习】-(11)矩形重叠
题目描述:平面内有n个矩形, 第i个矩形的左下角坐标为(x1[i], y1[i]), 右上角坐标为(x2[i], y2[i])。如果两个或者多个矩形有公共区域则认为它们是相互重叠的(不考虑边界和角落)。请你计算出平面内重叠矩形数量最多的地方,有多少个矩形相互重叠。分析:(1)左下角点位于某个矩形内,则存在一个重叠区域,如下图红色点所示;(2)至于左上角点,如下图绿色点位于某个矩形内的情况...原创 2020-03-01 23:06:17 · 984 阅读 · 0 评论 -
【MATLAB编程实例练习】-(10)寻找舞伴
题目描述:舞蹈队要参加央视春节晚会了,这可是天大的好消息。节目要求男女生组成一对一的舞伴,并且舞伴的身高要相同。例如男生的身高为2、3、4,女生为1、2、3,其中身高为“2”和“3”的同学能找到合适的舞伴,即最多有两对舞伴。你能帮他们计算出最多有多少对舞伴吗?解法1:clc;clear all; close all;answer = 0;Hei_M = input('请输入男生身高...原创 2020-02-29 11:58:37 · 270 阅读 · 0 评论 -
【MATLAB编程实例练习】-(9)一对未知数(x,y)
题目描述牛牛以前在老师那里得到了一个正整数数对(x, y), 牛牛忘记他们具体是多少了。但是牛牛记得老师告诉过他x和y均不大于n, 并且x除以y的余数大于等于k。牛牛希望你能帮他计算一共有多少个可能的数对。解法:clc;clear all; close all;n = input('请输入n=');k = input('请输入k=');answer = 0;for y = k:n...原创 2020-02-28 17:18:55 · 633 阅读 · 0 评论 -
【MATLAB编程实例练习】-(8)迷路的牛牛
题目描述:牛牛去犇犇老师家补课,出门的时候面向北方,但是现在他迷路了。虽然他手里有一张地图,但是他需要知道自己面向哪个方向,请你帮帮他。解法1:clc;clear all; close all;N = input('请输入转向次数N:');Str = input('请输入代表转向的字符串(L表示向左转,R表示向右转):');% direction 中存储按顺时针转动的四个方向NES...原创 2020-02-27 21:34:06 · 389 阅读 · 0 评论 -
【MATLAB编程实例练习】-(7)换零钱
题目描述:考虑仅用1分、5分、10分、25分和50分这5种硬币支付某一个给定的金额。例如需要支付11分钱,有一个1分和一个10分、一个1分和两个5分、六个1分和一个5分、十一个1分这4种方式。请写一个程序,计算一个给定的金额有几种支付方式。考察点:动态规划。解法1:输出:...原创 2020-02-06 18:10:16 · 936 阅读 · 0 评论 -
【MATLAB编程实例练习】-(6)数字三角形
题目描述:73 88 1 02 7 4 44 5 2 6 5如上所示,从一个数字三角形的顶部走到底部有很多条不同的路径,规则是只能从当前节点走到下一层相邻的节点,即下一层的左边或右边。例如第三行第二个数字“1”只能走到第四行的第二个数字“7”与第三个数字“4”。请寻找最佳一条路径,使得这条路径上节点的数字总和最大。解法1:自定义函数主函数输出...原创 2020-02-02 20:21:08 · 984 阅读 · 0 评论 -
【MATLAB编程实例练习】-(5)放苹果问题
题目描述:把 m 个同样的苹果放在 n 个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(5、1、1 和 1、5、1 是同一种分法,即顺序无关。)解法1:function f=PutApple(m,n)%递归出口:有0个苹果 || 只有1个盘子if (m == 0 || n == 1)f=1;elseif (n>m) %盘子比较多,肯定有空盘子,去掉必空的盘子f=...原创 2020-02-01 12:15:10 · 567 阅读 · 0 评论 -
【MATLAB编程实例练习】-(4)回文最少分割数
题目描述: 输入一个字符串str,返回把str全部切成回文子串的最小分割数。举例说明: str = “ABA”,因str本身就是回文串,所以返回0. str = “ACDCDCDAD”,最少需要切两次变成3个回文子串,所以返回2.解法1:str=input('Please enter a string: ',‘s’);L=length(str);dp(L) =-1;p =f...原创 2020-01-30 14:55:04 · 503 阅读 · 0 评论