我在MATLAB中有一个图像轮廓数据的结构。是如下:
s =
1x59 struct array with fields:
level
numel
xdata
ydata
%s(k).level contains the contour level height of the k-th line.
% s(k).numel contains the number of points describing the k-th line.
% sk).isopen is True if the k-th contour is open and False if it is closed.
% s(k).xdata contains the x-axis data for the k-th line as a column vector.
% s(k).ydata contains the y-axis data for the k-th line as a column vector
我必须将s(k).xdata和s(k).ydata提取到可变大小的矩阵中。这是我制作的节目
for k=1:59;
if (k==1);
i(k)=s(k).numel;
[i,2]=size(S{k}(:,:));
x=s(k).xdata;
y=s(k).ydata;
S{k}(:,:)=[x y];
elseif (k>1 && k<=59)
i(k)=s(k).numel;
l=i(k-1)+i(k)
[i,2]=size(S{k}(:,:));
x=s(k).xdata;
y=s(k).ydata;
S{k}(:,:)=[x y];
S(:,:)=[S{k-1}(:,:);S{k}(:,:)];
end
end
???错误:多个LHS分配的数组不能包含数值
任何人都可以帮助我吗? 非常感谢你!
答案 0 :(得分:2)
以下内容应取代您的所有代码:
S = cell2mat(arrayfun(@(x)[x.xdata x.ydata],s','UniformOutput',false))
这会生成一个包含代码调用元素[x y]
的单元格数组,并将其合并为一个数组S
。
请注意,在代码中调用size
并未设置S{k}
的大小,只是尝试将i
设置为该大小。