【发布时间】:2014-12-06 17:22:25
【问题描述】:
我想为现实世界的问题创建一个模拟并使用面向对象的编程。
例如我有一个这样的类:
classdef person
properties
name % string
age % integer
height % double (was called 'size' before - which might be a bad idea, see post below)
end
end
现在我可以创建一个人
p1 = person;
并给它属性
p1.name = 'Karl';
p1.age = 35;
p1.size = 1.80;
所以我们有一个叫 Karl 的人,他 35 岁,身高 1.80m。
我现在想要的是一个矩阵,假设我有一个岛的matrix1,其中0 的所有条目都是水,1 的所有条目都代表陆地。现在我想用人随机填充土地,这样在matrix1上的“土地”的任何地方都可以在matrix2中放置一个person,其他一切都再次为0。
第一:有没有办法将其矢量化?如何快速创建这样的矩阵,而不是使用两个 for 循环逐个元素地初始化这个元素?
第二:然后,我怎样才能对数据进行vecorized 访问? (如old_ppl = matrix2(person.age >= 50))
【问题讨论】:
-
第一个直觉,如果你想对一系列对象进行矢量化操作,你必须创建一个
personCollection对象来收集所有这些人,并在这个集合类中实现一个方法,它可以获取/处理矢量化输入/输出。 -
first 你想要一个随机排序的 0,1 矩阵吗?如果是这样,只需生成一个随机矩阵,例如
A=rand(1000)返回一个 1000x1000 的矩阵,其值从 0 到 1。现在您执行A(A<0.5)=0;A(A>=0.5)=1;并得到一个 0,1 的随机矩阵。现在有了你的第二个矩阵......你想让那些人随机放置在你的“土地”上吗?你有足够的人来填充一个完全是一个矩阵的人吗?不太可能,但毕竟是可能的。 -
是的,它们应该随机放置在土地上
标签: matlab oop vectorization