X, Y, Z向量到图像(错误:赋值的非单例rhs维度比非单例下标少)
2次浏览(过去30天)
显示旧的注释
答案(1)
沃尔特·罗伯森
2015年9月30日
maxx = max(X);
max = max(Y);
img(sub2ind([maxy, maxx], X, Y)) = T;
也可以编码为
max = max(Y);
img((X-1)*maxy + Y) = T;
你遇到的问题是,img([1 2],[1 2])并不意味着img(1,1)和img(2,2):它意味着img(1,1), img(2,1), img(1,2), img(2,2)——这是索引向量的每一个组合。因此,诸如img(1:3,X)这样的结构工作,并在每一行中给出列X,无论X中有多少项,因为你的代码将相当于说,如果X有除3之外的任何数量的元素,img(1:3,X)应该在行/列组合范围内发挥预期的作用,但如果X恰好有3个元素,那么突然的意义应该转移到img(1,X(1)), img(2,X(2)), img(3,X(3));这当然是不对的。