Plot 八度曲线格式->;点坐标

Plot 八度曲线格式->;点坐标,plot,octave,Plot,Octave,octave以contourc格式保存轮廓数据,这对我来说有点特殊 是否有一些函数或脚本将这些数据转换为 我可以画的点坐标?仅限一级 感谢您为一个级别处理contourc格式的示例(该级别可能有多个轮廓) A=0(5);A(2:4,2:4)=1;A(3,3)=0;%示例图像 轮廓格式=轮廓C(A,1);%只有一层(但这里正好有两个轮廓) C=单元(); 而~isempty(轮廓格式) N=轮廓格式(2,1); C{end+1}=轮廓格式(:,2:1+N); 轮廓格式(:,1:1+N)=[];%删

octave以contourc格式保存轮廓数据,这对我来说有点特殊

是否有一些函数或脚本将这些数据转换为 我可以画的点坐标?仅限一级


感谢您为一个级别处理contourc格式的示例(该级别可能有多个轮廓)

A=0(5);A(2:4,2:4)=1;A(3,3)=0;%示例图像
轮廓格式=轮廓C(A,1);%只有一层(但这里正好有两个轮廓)
C=单元();
而~isempty(轮廓格式)
N=轮廓格式(2,1);
C{end+1}=轮廓格式(:,2:1+N);
轮廓格式(:,1:1+N)=[];%删除已处理的点
结束
C=
{
[1,1] =
1.5000   2.0000   3.0000   4.0000   4.5000   4.5000   4.5000   4.0000   3.0000   2.0000   1.5000   1.5000   1.5000
2.0000   1.5000   1.5000   1.5000   2.0000   3.0000   4.0000   4.5000   4.5000   4.5000   4.0000   3.0000   2.0000
[1,2] =
2.5000   3.0000   3.5000   3.0000   2.5000
3.0000   2.5000   3.0000   3.5000   3.0000
}

说明:来自:

返回值为2xn矩阵,包含以下格式的轮廓线:

[lev1,x1,x2,…,levn,x1,x2。。。
len1,y1,y2,…,lenn,y1,y2,…]
其中等高线n的标高(高度)为
levn
,长度为
lenn


因此,对于第一个轮廓,我们收集从2到N+1的列,其中N由轮廓C输出的元素(2,1)给出。然后我们删除N+1个元素,并以相同的方式处理下一个轮廓,直到没有更多的点为止。

为了性能起见,您可能希望有一个
offset
变量,该变量随
N
每次迭代而增加,从而避免您必须删除处理过的点和减少复制。如果这样做,将不会有任何拷贝,因为单元格数组中的每个数组都只是对
ContourCFormat
Hi@carandraug的引用!Tbh,我更倾向于简单性/可读性,而不是性能,但这是一个很好的观点,谢谢!:P