【发布时间】:2012-06-25 21:31:37
【问题描述】:
我正在尝试创建一个大小为 1000x1000x1000 且所有元素(对应于体素)为零的 3D 数组,然后将 2000 到 2001 范围内的随机值而不是 0 分配给数组中的某些特定元素,最后存储它是一个二进制文件。
名为“coord”的数组是点的 Nx3 矩阵坐标 (x,y,z),我需要为它们分配 3D 数组中的随机值。))
我应该提到坐标矩阵的所有 x,y,z 值都是浮点数:0
我的目标是以二进制格式(MATLAB 的默认二进制格式除外)导出 3D 矩阵,以便我可以将其与其他程序一起使用。 到目前为止,这是我所做的:
load coord; a=coord(:,1); b=coord(:,2); c=coord(:,3); d=rand(1000,1)*2000; dd = 0:2:1000; [xq,yq,zq] = meshgrid(dd,dd,dd); vq = griddata3(a,b,c,d,xq,yq,zq,'nearest'); h=figure; plot3(a,b,c,'ro') %=========================================% fid=fopen('data.bin','w'); fwrite(fid,vq,'single'); fclose(fid);
在上面的代码中,a、b 和 c 是每个点的坐标,d 是所需范围的相应强度值。虽然可以创建 3D 网格(使用 meshgrid)然后插入网格点的强度值(使用 griddata3),但最终结果 (vq) 不会是实际点 (ai,bi,ci) 和相应的强度,而是一组对可视化非常有用的插值点(例如,如果您想拟合适合实际数据的 3D 表面)。 我只是想找到一种将实际数据点及其强度存储到文件中并将其导出的方法。 非常感谢任何帮助。
【问题讨论】: