Matlab怎么输出下图网格图的各点坐标(x,y,z)

要求:在EXCEL或者WORD、txt(最好excel)中能够输出下面网格点的坐标(x,y,z) ;最好这些点坐标在excel中的排列方式和网格点排列方式一致代码:xa = 0:21:210;za = 0:18:180;[x,z] = meshgrid(xa,za);y=sin(45)*x.^2/(210*sqrt(3));mesh(x,z,y)title('曲轴三维图')xlabel('x轴');ylabel('z轴');zlabel('y轴');axis([0 250 0 250 -180 180])

你要xyz分别输出为三个二维数组的三个文件,才能“这些点坐标在excel中的排列方式和网格点排列方式一致”,如果xyz输出为一个文件,excel能读取高维数组文件?追问

大神,刚理解了下,是把每个点的X输出在一个excel中,然后Y与Z再各自输出在一个文件中,是这么理解吗?我用fopen和fprintf函数写的,生成的.xlsx文件打不开,可能就是因为生成高维数组了。生成的Word如下图:


追答

关键是你要这些数据干啥,如果要拿到别的软件中绘图(图形),建议将xyz保存为一个三列的二维数组,三列分别是xyz的数据,这是绘图软件通用的格式。如果是处理图像,你的软件要求是三个二维数组,排列方式和网格点排列方式要一致,那么xyz的数据通常要分三个文件分别保存。你的excel可搞不定高维数组哦所以只能降维处理! 到底你要这两种的哪一种?

追问

是想拿到别的软件进行绘图,A=[1;2;3...121](A为一个121行1列的列向量),B=[同为一个相同行的列向量],C=[同为一个相同行的列向量],D=[A B C],怎么让D的输出格式为一个121行3列的矩阵;我每次输出时为什么D总是在先排完A然后才接着排完B再C,而不是一个A一个B再一个C再一个A...一直到最后一个C那种形式呢?学长,我把扣扣发到您的私信里了,麻烦加下,这上面效率低啊

追答

你的追问我不太明白你的描述和这个提问的关系,我就先回答你的提问,提问中xyz都是二维数组,在原程序中加入xyz=(x(:),y(:),z(:));save xyz.dat xyz -ascii;会在工作目录下得到一个xyz.dat 的文件,三列的二维数组,三列分别是xyz的数据,使用任何软件都可打开。

追问

恩呢,是的,有点稍微偏离了。现在给这121个点从1到121进行编号了,所以不需要按照网格的格式对应输出了,提问其实已经算解决啦。好不容易碰见位大神级学长,所以想多问几个问题,嘿嘿。追问那个问题是后面输出时,出现的新问题,在txt中输出的矩阵D与矩阵的实际排列方式不一样了。代码我发在学长私信中啦,不知可不可以?如有冒犯,还请学长见谅,可能又得麻烦学长啦,再次感谢!(这边限制字数,代码粘贴不成功)

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-07-19
我也正好做这个,楼主,能不能分享一下代码,非常感谢!
相似回答