楼主: baixiangnju
4474 4

[问答] 弱问一个关于MATLAB中赋值的问题,貌似很简单,求教! [推广有奖]

  • 0关注
  • 0粉丝

已卖:76份资源

本科生

10%

还不是VIP/贵宾

-

威望
0
论坛币
140 个
通用积分
0.0600
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
681 点
帖子
57
精华
0
在线时间
70 小时
注册时间
2010-2-20
最后登录
2019-3-26

楼主
baixiangnju 发表于 2014-3-6 05:54:17 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
是模拟动物活动的 ,现在有5个地点(生境) 每个地点中的动物可以随机迁移到其他的地点

对于第一个地点里,假如有四个动物,
可以用随机数randi产生的目的地矩阵:
r= randi(5,[1, 4]);
假如得到 r = [3,3,1,2];

那么对于目的地来说,第1和第2个地点进入了1个动物,而第3个地点进入了2个动物
我该如何实现
Immi = [1,1,2,0,0]; Immi 表示迁入数

我如果用Immi(r) = 1; 那么得到的是Immi = [1,1,1,0,0]
就会少了一个动物,因为随机数产生的矩阵中有一个重复

求大侠赐教,不甚感谢!!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:MATLAB matla atlab Lab Atl 动物 如何

沙发
Benlaron 发表于 2014-3-6 14:50:38
特来抛砖引玉
参考了一下matlab论坛的相关讨论,尤其是关于hist和unique的命令。
特此声明
clear;
r = randi(5,1,4)
[m, n] = hist(r,unique(r));
Immi = zeros(1,5);
Immi(n) = m


值得说明的是,hist返回的两个参量分别是r中的各个唯一值出现了m次,分别是X、Y、Z……记录在n;
zeros那个就是纯粹为了适应可能没有5的情形而造的
然后是矩阵赋值,就不多说了

结果如下
  1. r =
  2.      4     1     1     3

  3. Immi =
  4.      2     0     1     1     0
复制代码



藤椅
baixiangnju 发表于 2014-3-6 17:23:12
Benlaron 发表于 2014-3-6 14:50
特来抛砖引玉
多谢啊,刚才用你给的code做了一下,确实不错
我之前自己尝试用循环,但是我要运行几十万次,循环太慢了

不过,我后来想到,这个过程,其实可以直接简化为
有十个动物(要迁出的),把它们随机分在n个组(每个组相当于一个目的地),组里可以为0,就可以了
不知道有没有直接这样的函数,我自己查了一下也没有查到

多谢啊!!

板凳
baixiangnju 发表于 2014-3-6 18:36:44
Benlaron 发表于 2014-3-6 14:50
特来抛砖引玉
刚才又试了一下,有时候会出现问题
比如如果 r = [18,18]
那么应该用您的code,我们期望得到 m = 2, n =18
但结果确输出了两个1*18的一个矩阵
不知道咋回事诶

报纸
Benlaron 发表于 2014-3-7 07:50:53
baixiangnju 发表于 2014-3-6 18:36
刚才又试了一下,有时候会出现问题
比如如果 r = [18,18]
那么应该用您的code,我们期望得到 m = 2, n  ...
那就稍微改改咯,我就以为你的动物数就五个。
那就可以这样

clear;
aniNum = 4   %动物个数
plaNum = 5   %迁出地个数
r = randi(plaNum,1,aniNum)
[m, n] = hist(r,unique(r));
Immi = zeros(1,plaNum);   %为了让r中没出现的元素
Immi(n) = m

那么如果r = [18, 18]
就是说此时plaNum = 18,aniNum = 2
那输出的r 就是1×2的,而Immi就是1×18的。如下:
  1. r =

  2.     14    14


  3. Immi =

  4.      0     0     0     0     0     0     0     0     0     0     0     0     0     2     0     0     0     0     0     0
复制代码
已有 1 人评分经验 论坛币 学术水平 热心指数 收起 理由
Xaero + 60 + 100 + 1 + 1 热心帮助其他会员

总评分: 经验 + 60  论坛币 + 100  学术水平 + 1  热心指数 + 1   查看全部评分

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 20:27