X, Y, Z向量到图像(错误:赋值的非单例rhs维度比非单例下标少)

2次浏览(过去30天)
我有三个非常大的向量(每个向量有3000万个点)。X Y和t,我想把它变成一个图像。
X有x坐标
Y有y坐标
T有时间值
这三个向量的顺序是一样的。我最后想要的是:
Img(Y(i), X(i)) = T(i)。
Img(round(y0(1)),round(x0(1))) = t1(1);%的作品
Img(round(y0),round(x0)) = t1;%不起作用并给出非单例错误消息。

答案(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));这当然是不对的。

类别

了解更多MATLAB报表生成器帮助中心而且文件交换

标签

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!