我正在尝试创建一个大小为 1000x1000x1000 的 3D 数组,其中所有元素(对应于体素)为零,然后将 2000 到 2001 范围内的随机值而不是 0 分配给数组中的某些特定元素,最后将其存储为二进制文件。
名为“coord”的数组是我需要为它们分配 3D 数组中的随机值的点的 Nx3 矩阵坐标 (x,y,z)。))
我应该提到坐标矩阵的所有 x,y,z 值都是浮点数:0<=x<=1000 0<=y<=1000 0<=z<=1000
我的目标是以二进制格式(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 表面)。我只是想找到一种将实际数据点及其强度存储到文件中并将其导出的方法。非常感谢任何帮助。