I tried to find the intersection points of the attached figure using the following code provided to me which worked for a different figure.
h1c = get(gca, 'Children');Xdc = get(h1c, 'XData');Ydc = get(h1c, 'YData');maxlen = max(cell2mat(cellfun(@max, cellfun(@size, Xdc, 'Uni',0),'Uni',0)))Xd2 = cell2mat(Xdc(2));Yd2 = cell2mat(Ydc(2));Xd = Xd2;Yd1 = cell2mat(Ydc(1));Yd = [Yd1(1)*ones(size(Xd2)); Yd2];% CALCULATIONS:
Ydn = diff(Yd, [], 1); % Subtract line from curve to create zero-crossings
Zx = circshift(Ydn, [0 1]) .* Ydn; % Use circshift to detect them
Zxi = find(Zx < 0); % Their indices
for k1 = 1:length(Zxi) % Use interp1(Y,X,0) to get line intercepts as Xzx
Xzx(k1) = interp1([Ydn(Zxi(k1)-1) Ydn(Zxi(k1))], [Xd(1,Zxi(k1)-1) Xd(1,Zxi(k1))], 0);end% PLOT ZERO-CROSSINGS ON FIGURE TO CHECK:
hold onplot(Xzx, repmat(Yd(1,1),1,length(Xzx)), '*r')hold off
It returns with the error
Error using cellfunInput #2 expected to be a cell array, was double instead.
And Im not quite sure how to fix it
Best Answer