MATLAB中文论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3102|回复: 23|关注: 2

回答这三个问题,赢取实用MATLAB书籍和论坛定制礼品!

[复制链接]

MATLAB 基础讨论
版块优秀回答者

184

主题

1009

帖子

34

最佳答案
  • 关注者: 512
发表于 2017-10-23 11:27:25 | 显示全部楼层 |阅读模式
活动内容:
本次活动形式仿照 MATLAB 官方用户社区 MATLAB Central-Cody版块规则。

用户首先阅读问题描述,在 MATLAB 中解决以下问题,MATLAB 代码要求满足问题评价标准。
完成后,在本帖中回复并上传 MATLAB 代码,由资深 MATLABer 选出符合要求的代码并评选出最优的解决方案。
最佳答案的提供者将赢取论坛准备的精美礼品!

用户可以从以下三个问题中选择 1~3 项进行解答,完成数量越多,赢取礼品的机会越大!

点击下载具体问题描述和测试文件。


或者在2-4楼查看具体问题描述:

1. 关于 MATLAB 的线性索引问题

2. MATLAB 向量操作

3. 实现如下的函数功能


参与方法:
在本帖中回复并打包上传您的 MATLAB 代码(附件名请使用格式“题目编码-论坛用户名”,例如“1-ilovematlab”,多个问题答案请分别上传),论坛评委会在活动结束后下载并验证各位的代码,评选出获胜用户。

参与时间:
2017年10月23日 - 2017年11月19日

评选方法:
论坛邀请《MATLAB向量化编程基础精讲》作者,MATLAB Central Cody世界排名第二的用户qibbxxtM31415926作为评委选出获奖用户,并在该帖公布。
在活动结束后,论坛会邀请两位资深 MATLAB 玩家分享上述三个问题的解决方法,并回答论坛会员提出的问题。

活动奖品:
一等奖 1名 获得 MATLAB 中文论坛定制插线板或充电宝一份
二等奖 2名 获得 MATLAB 纪念T恤一件
三等奖 5名 获得 MATLAB 中文论坛纪念LED灯一个

                               
登录/注册后可看大图

所有获奖用户将免费获得北航出版社出版的实用MATLAB编程书籍《MATLAB向量化编程基础精讲》作为奖品!


如果你有兴趣,在MATLAB中解决问题来提高你的编程能力,点击进入Cody里打怪升级,和全球的高手较量~
Cody 5周年挑战正在进行中,加入挑战赢取五周年纪念徽章!



MATLAB 基础讨论
版块优秀回答者

184

主题

1009

帖子

34

最佳答案
  • 关注者: 512
 楼主| 发表于 2017-10-23 11:36:34 | 显示全部楼层
关于MATLAB的线性索引问题

简介
MATLAB提供了强大的数据操作能力,使得我们可以任意的处理我们的数据。但是也有一些功能不方便之处, 比如在python里面,你可以:

                               
登录/注册后可看大图

在上面的python代码中,我们创建一个随机的二维矩阵,通过括号索引,我们可以访问该数组的第0行第2列的元素和第2行第4列的元素。那么在MATLAB里面同样的操作,会是什么效果呢?
  1. arr = randi([0, 10], 3, 5)
复制代码
arr =
     10     1     2     10     2
       6     2     8      3     6
       1     9     2      2     5

  1. row = [1, 3]
复制代码
row =
     1     3
  1. col = [2, 4]
复制代码
col =
     2     4
  1. arr(row, col)
复制代码
ans =
     1     10     9      2

我们看到并没有实现我们所要的效果, 程序把第1行第3行和第2列第4列的数据全部提取出来了。一般的做法是这样:
  1. idx = sub2ind(size(arr), row, col)
复制代码
idx =
     4    12
  1. arr(idx)
复制代码
ans =
     1     2

问题
还有一种解决方案是,我们自己创建一个数据类型,实现同样的功能。
假设我们要实现的这个数组类型名字是subdoublearray, 它接受double型的矩阵作为输入。可以实现和python同样的索引功能。
在附件中,我们给出了p文件,需要实现下面的功能, 附件中我们给出了测试文件,test_subdoublearray.m 作为程序是否满足要求的测试文件
  1. A = [1 2 3
  2. 4 5 6
  3. 7 8 9];
  4. B = subdoublearray(A);
  5. y = B([1 3],[3 1])
复制代码
y =
     3     7
  1. y_correct = [3 7]
复制代码
y_correct =
     3     7


下面轮到你了,have fun!

评价标准:
1. 需要通过测试文件
2. 在满足1的条件下,按照size大小排序

size的计算方法如下:
           调用calculateSize函数
  1. calculateSize('subdoublearray.m')   
复制代码
ans =
    54


点击下载问题描述和测试文件。

MATLAB 基础讨论
版块优秀回答者

184

主题

1009

帖子

34

最佳答案
  • 关注者: 512
 楼主| 发表于 2017-10-23 11:46:48 | 显示全部楼层
向量操作

题目
我们给定一个二维数组,如下:
  1. rng(923)
  2. n = 1e4;
  3. data = num2cell([unifrnd(-10, 10, n, 3), randi(1e2, [n, 1])],1);
  4. inputdata = table(data{:}, 'VariableNames', {'X', 'Y', 'Z', 'Group'});
  5. head(inputdata) % 只是显示了前8组
复制代码

                               
登录/注册后可看大图


该数据的第一列表示横坐标X, 第二列表示纵坐标Y, 第三列表示页坐标Z, 第四列表示分组。
现在要求分组间的最小距离, 分组间的最小距离为两个分组中任意两点之间的距离的最小值,需要实现一个函数,输入inputdata, 输出两个分组间的距离的矩阵。

结果如下:
  1. tic
  2. result = compute(inputdata);
  3. toc
复制代码
Elapsed time is 29.715973 seconds.

评价标准:
1. 计算结果正确
2. 按照执行时间长短排序

点击下载问题描述和测试文件。

Have fun!

MATLAB 基础讨论
版块优秀回答者

184

主题

1009

帖子

34

最佳答案
  • 关注者: 512
 楼主| 发表于 2017-10-23 11:49:05 | 显示全部楼层
题目

实现一个函数myfun,通过下列测试:
  1. A = myfun()
  2. assert(isequal([A,A],A+A))
复制代码

评价标准:
1. 通过测试
2. 雷同者只记录第一个提交正确结果者

点击下载 全部问题描述和测试文件。

上传你的代码解决以上任一问题,即可参与活动,赢取实用书籍和精美论坛礼品!
Your time now, have fun!


论坛优秀回答者

7

主题

789

帖子

105

最佳答案
  • 关注者: 19
发表于 2017-10-23 16:23:38 | 显示全部楼层
响应管理员号召,先来一个   

2-caicaibi.m

1 KB, 下载次数: 0

论坛优秀回答者

6

主题

1100

帖子

220

最佳答案
  • 关注者: 14
发表于 2017-10-23 16:28:41 | 显示全部楼层
本帖最后由 cxvista 于 2017-10-23 17:03 编辑

响应管理员号召,再来一个  

3-cxvista.rar

163 Bytes, 下载次数: 0

论坛优秀回答者

中级

781 麦片

财富积分


5001500


1

主题

992

帖子

171

最佳答案
  • 关注者: 27
发表于 2017-10-23 16:57:44 | 显示全部楼层
本帖最后由 maple1314168 于 2017-10-24 12:24 编辑

第2题:
这个好像在cody里面有。
上传一下我的代码看看

2-maple1314168.rar

306 Bytes, 下载次数: 0

MATLAB 基础讨论
版块优秀回答者

184

主题

1009

帖子

34

最佳答案
  • 关注者: 512
 楼主| 发表于 2017-10-23 16:57:50 | 显示全部楼层
cxvista 发表于 2017-10-23 16:28
响应管理员号召,再来一个

附件命名不太标准哟。。

论坛优秀回答者

6

主题

1100

帖子

220

最佳答案
  • 关注者: 14
发表于 2017-10-23 17:02:14 | 显示全部楼层
ilovematlab 发表于 2017-10-23 16:57
附件命名不太标准哟。。

哈哈  眼盲 眼盲,已经改了

论坛优秀回答者

6

主题

1100

帖子

220

最佳答案
  • 关注者: 14
发表于 2017-10-23 23:52:06 | 显示全部楼层
本帖最后由 cxvista 于 2017-10-30 09:28 编辑

响应管理员号召,再来一个  

1-cxvista.rar

446 Bytes, 下载次数: 0

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

快速回复 返回顶部 返回列表