Matlab学习笔记 — Cody Problem 9_lyang1998的博客-程序员ITS203_matlab problem=9

技术标签: matlab  Cody Problems个人总结  

Matlab Central Cody Problem 9

Problem 9. Who Has the Most Change?
You have a matrix for which each row is a person and the columns represent the number of quarters, nickels, dimes, and pennies that person has (in that order). What is the row index of the person with the most money?
Note for those unfamiliar with American coins: quarter = $0.25, dime = $0.10, nickel = $0.05, penny = $0.01.
Example:

 Input  a = [1 0 0 0; 0 1 0 0]
 Output b = 1

since the first person will have $0.25 and the second person will have only $0.05.

一开始的时候没仔细看题目,以为是输出这些人拥有钱数的最大值,直接想法是通过矩阵乘法运算得到每个人的钱数,然后使用max命令得到钱数的最大值,中间一个小错误就是把max还错打成了Max,导致没办法识别。后来发现是输出那个人的序号,也就是矩阵乘法所得到的列向量中最大值对应的行数,通过在网上搜索发现使用find命令可以完成,指令如下。

[row,col] = find(___)

用在代码中的形式为,

function b = most_change(a)
    Coins = [0.25;0.05;0.10;0.01];
    A = a*Coins;
    [row,col] = find(A == max(A));%find的用法是查找一个矩阵中某个元素,注意语法
    b = row;
end

具体来看的话,这个题目都明确了是列向量,试了一下,发现下述简化后的代码同样可行,

function b = most_change(a)
    Coins = [0.25;0.05;0.10;0.01];
    A = a*Coins;
    b = find(A == max(A));%find的用法是查找一个矩阵中某个元素,注意语法
end

【find指令学习】

k = find(X)%返回矩阵X中非零元素的序号
k = find(X,n)%返回矩阵X中前n个非零元素
k = find(X,n,direction)%这里的direction有'first'和'last'两个选项,分别代表前n个与后n个满足条件的元素,上面默认的就是first
[row,col] = find(___)%返回符合条件的元素的行和列,储存在row和col两个变量中,注意row和col也是可以改变名称的,并非固定不变
[row,col,v] = find(___)%v代表value,即在返回行列数的同时返回元素值

Ex. 在 4×4 幻方矩阵中查找前五个小于 10 的元素。
X = magic(4)
X = 4×4

16     2     3    13
 5    11    10     8
 9     7     6    12
 4    14    15     1

k = find(X<10,5)
k = 5×1

 2
 3
 4
 5
 7

查看 X 的对应元素。

X(k)
ans = 5×1

 5
 9
 4
 2
 7

从这个Matlab官方文档中的例子又体现出了其应用矩阵运算的便捷性,Matlab中的矩阵都默认以列向量的方式进行储存,所得到的元素下标都是把矩阵中元素按每列顺序排好后的相应编号,而将这些编号组成的列向量代到某个矩阵中时,也可以十分快捷地读取出其对应的元素
另外在查找非整数值时,需要使用容差值来进行查找,否则,由于浮点舍入误差有时会生成空矩阵。
Ex.
y = 0:0.1:1
y = 1×11

     0    0.1000    0.2000    0.3000    0.4000    0.5000    0.6000    0.7000    0.8000    0.9000    1.0000

k = find(y==0.3)
k = 1x0 empty double row vector

k = find(abs(y-0.3) < 0.001)
k = 4

Ex. 在 4×2×3 数组中查找非零元素。指定两个输出 row 和 col 以返回非零元素的行和列下标。如果输入是多维数组 (N > 2),find 返回 col 作为 X 的 N-1 个尾部维度的线性索引。

X = zeros(4,2,3);
X([1 12 19 21]) = 1
X(:,:,1) =

 1     0
 0     0
 0     0
 0     0

X(:,:,2) =

 0     0
 0     0
 0     0
 1     0

X(:,:,3) =

 0     1
 0     0
 1     0
 0     0

[row,col] = find(X)
row = 4×1

 1
 4
 3
 1

col = 4×1

 1
 3
 5
 6

从这里面的列数可以看出,多维数组的情况下,又是将这些列分别拿出来了,列数是总列数而不是4*2中的两列。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lyang1998/article/details/112755749

智能推荐

LL_SLAVE_FEATURE_REQ_ok_day的博客-程序员ITS203

slave设备发出LL_SLAVE_FEATURE_REQ时,master若不识别该事件,应该要返回LL_UNKNOWN_RSP事件。如出现问题,会导致连接异常,修正方法是更新固件。

用OLE操作Excel(目前最全的资料)(04.2.19更新) - ccrun(老妖)_jvict的博客-程序员ITS203_ccrun老妖

用OLE操作Excel(目前最全的资料)(04.2.19更新) 作者: ccrun ,如转载请保证本文档的完整性,并注明出处。欢迎光临 C++ Builder 研究,http://www.ccrun.com/doc/go.asp?id=529用OLE操作Excel(目前最全的资料)(04.2.19更新)本文档部分资料来自互联网,大部分是ccrun(老妖)在Excel

Deepin - 环境配置及软件安装卸载记录(Debain镜像源)_写虫师的博客-程序员ITS203_deepin linux 卸载 vim

文章目录1. 更改镜像源2. 系统初始化系统升级系统清理3. 安装软件更换桌面前置工作安装mate桌面安装xfce桌面安装jetbrains-toolbox4. 卸载软件5. 扩展阅读:5.1 aptitude常用命令

详解:移除链表元素_元灵石胎的博客-程序员ITS203_cur.next.val

力扣链接给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val == val的节点,并返回新的头节点。 这道题要求我们删除一个链表中的val与特定值相等的节点,考察了链表的遍历和节点的删除。思路很简单,遍历链表的每个结点,直到遇到某个结点的val为指定值,然后将其删除。由于这里的链表是单向链表,要删除某个结点需要先找到该节点的前一个结点,所以我们在遍历每个结点的时候应该用前一个结点的索引去查看后一个结点的val。但是在实际...

VS--常用到的快捷键_cdan134的博客-程序员ITS203

这里只记录自己现在用到且之后会经常用到的快捷键(会多少写多少):跳转函数定义处:F12 上一个光标点:CTRL - / + 关闭当前窗口:CTRL + F4 删除当前行:ctrl + L. Ctrl+E,F —-格式化选中的代码  CTRL + K, CTRL + C注释选择的代码  CTRL + K, CTRL + U取消对选择代码的注释  ...

dfrobot公司印象_doctorlyly的博客-程序员ITS203_dfrobot的solgen

这家公司产品很多,有个编译器不错叫upycraft还有阿里云的套装 gravity还有代码,可以拿来用最近的对接阿里云的程序版本是0.0.9下载了以后,有个tools 里面有个get. exe运行它就能被arduino识别出来了,不用从板管理里安装...

随便推点

mdev的使用方法和原理。_hugerat的博客-程序员ITS203

 mdev的使用方法和原理mdev是busybox自带的一个简化版的udev,适合于嵌入式的应用埸合。其具有使用简单的特点。它的作用,就是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动程序所需的节点文件。在以busybox为基础构建嵌入式linux的根文件系统时,使用它是最优的选择。mdev使用mdev的使用在busybox中的mdev.txt文档已经将得很详细了。但作为例子

irp追踪工具_CreateFile_进行通讯 打印缓冲区数据_「已注销」的博客-程序员ITS203

/************************************************************************* 文件名称:Driver.h * 作 者:张帆* 完成日期:2007-11-1*******************************...

【整理之路二】百度地图的路径规划和调用本机地图导航_奔波在外的程序猿的博客-程序员ITS203

推荐看完之后注意一下最后的东西一、细说百度地图的路径规划路径规划主要有这么几种1.公交路径规划1.1 市内公交规划(暂时不在这里说)1.2 跨市/省公交规划 // 导入头文件 #import &lt;BaiduMapAPI_Search/BMKSearchComponent.h&gt; #import &lt;BaiduMapAPI_Map/BMKPolylineView.h&gt; #import &lt;BaiduMapAPI_Utils/BMKGeometry

java中下标和标识符_标识符不能以数字 C语言中,int为什么不能作为标识符?请高人具体指点下标认符的含义。..._壹心理的博客-程序员ITS203

java中标识符能不能有数字 变量、常量、类、方法的名称都是标识符,它的组成是有四种:字母、数字,_和$,标识符的开头字符不能以数字开头,保留字或关键字不能作为标识符,标识符区别大小写,数字不能开头。与C/C++语言不同的是,Java语言还可以将一些非拉丁字母包含在标识符中,这是因为Java语言使用的是Unicode字符,所有的十六进制00C0以上的Unicode字符都可以用在标识符中。c++标识...

mysql 主从复制 position_MySQL的主从复制_sdifan的博客-程序员ITS203

在实际企业应用环境当中,单台mysql数据库是不足以满足日后业务需求的。譬如服务器发生故障,没有备份服务器来提供服务的话,业务就得停止。介于这种情况,mysql经常采用主从构架,或者主主架构,这样可以实现mysql服务器的负载均衡,提升mysql服务器的性能.而关键是,可以实现mysql的数据同步复制功能,来为企业数据备份提供一种方便的机制。MySQL支持单向、异步复制,复制过程中一个服务器充当主...

firefox安装selenium ide_二毛毛毛毛毛的博客-程序员ITS203_firefox安装selenium ide

1,firefox进入selenium官网https://www.seleniumhq.org/download/,点击图中位置2,进入下一个页面之后,点击图中添加按钮3,添加之后,点击确认下载,下载成功后会提示下次重启firefox时会自动安装,然后关闭firefox,重新打开后会看到firefox浏览器右上角会有selenium,点击就可以使用啦~注意:selenium安装时对firefox的...

推荐文章

热门文章

相关标签