专栏
标签
想将data[x:x2 y:y2 1:z]的元素转换为1该如何实现
一般问题
发布于 2024-10-26 21:40:56
查看 28过去610天

Ddata = [randi([0,100],20,2) randi([0,10],20,1)]
width = 5
height = 5
data_size = 100
data = zeros(data_size,data_size,data_size)

x = Ddata[:,1]
y = Ddata[:,2]
z = Ddata[:,3] 
x2 = x .+width
y2 = y .+height

data[x:x2 y:y2 1:z] .= 1

所属专栏:Julia语言
产品信息:Syslab科学计算环境
科学计算

全部回答 2

发布于 2024-10-27 09:43:06

老师,您好,目前支持矩阵索引后赋值的方式修改矩阵。但是要求索引值为标量。您的索引值为向量,上述方式不支持。请问您写的代码具体目的或者需求是什么?

发布于 2024-10-28 13:44:58

你好,Syslab中不允许自动增长数组,您看下下面代码能不能满足您的需求:

X = Ddata[:,1].*0.1;#x列参数命名 数据缩放,便于绘制和观察
Y = Ddata[:,2].*0.1;#y列参数命名
Z = Ddata[:,3].*2;#z列参数命名
width = 10; #建筑物底面宽度
height =10;#建筑物底面长度
## 创建栅格地图
data_size = 500;#栅格大小 
# 创建一个大小为500x500x500的空白三维矩阵
data = zeros(data_size, data_size, data_size); 
#三维地图数据赋值-----建筑物群
for i = 1:size(Ddata,1)
    x = Int(floor(X[i]))  # 将浮点数转换为整数,用于索引
    y = Int(floor(Y[i]))
    z = Int(floor(Z[i]))

    x_end = min(x + width, data_size)
    y_end = min(y + height, data_size)
    z_end = min(z, data_size)
    #data为三维0-1矩阵,存储地图数据,数值为1表示此处存在障碍物
    data[x:x_end, y:y_end, 1:z_end] .= 1 
end
用户
和原帖交流更多问题细节吧,去
我要发帖 我要发帖
资料中心 资料中心
查看更多>
热门帖子 热门帖子
主要贡献者 主要贡献者
过去7天