Error using patch Vectors must be the same lengths.
Ältere Kommentare anzeigen
function popupmenu7_Callback(hObject, eventdata, handles)
% hObject handle to popupmenu7 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu7 contents as cell array
% contents{get(hObject,'Value')} returns selected item from popupmenu7
v=get(handles.popupmenu7,'Value')
if v == 1
X1=get(handles.edit1, 'String');
X2=get(handles.edit4, 'String');
X3=get(handles.edit7, 'String');
X4=get(handles.edit10, 'String');
Z=[X1 X2 X3 X4]
elseif v == 2
Y1=get(handles.edit2, 'String');
Y2=get(handles.edit5, 'String');
Y3=get(handles.edit8, 'String');
Y4=get(handles.edit11, 'String');
Z=[Y1 Y2 Y3 Y4]
elseif v == 3
Z1=get(handles.edit3, 'String');
Z2=get(handles.edit6, 'String');
Z3=get(handles.edit9, 'String');
Z4=get(handles.edit12, 'String');
Z=[Z1 Z2 Z3 Z4]
end
image=uigetfile('*.png', 'File Selector');
imshow(image)
axes=handles.axes1;
hold on;
maxAllowablePoints = 5; % Whatever you want.
numPointsClicked = 0;
promptMessage = sprintf('Left click up to %d points.\nRight click when done.', maxAllowablePoints);
titleBarCaption = 'Continue?';
button = questdlg(promptMessage, titleBarCaption, 'Continue', 'Cancel', 'Continue');
if strcmpi(button, 'Cancel')
return;
end
while numPointsClicked < maxAllowablePoints
numPointsClicked = numPointsClicked + 1;
[x(numPointsClicked), y(numPointsClicked), button] = ginput(1)
if button == 3
% Exit loop if
break;
end
end
% Print to command window
x
y
Z
msgbox('Done collecting points');
patch(handles.axes1, x,y,Z, 'Facecolor', 'interp')
hold off
i am using this code to plot on the image but getting error as follows
Error using patch
Vectors must be the same lengths.
Error in imgplt3d>popupmenu7_Callback (line 643)
patch(handles.axes1, x,y,Z, 'Facecolor', 'interp')
Error in gui_mainfcn (line 96)
feval(varargin{:});
Error in imgplt3d (line 42)
gui_mainfcn(gui_State, varargin{:});
Error in @(hObject,eventdata)imgplt3d('popupmenu7_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating uicontrol Callback
please help me
2 Kommentare
KSSV
am 31 Mai 2019
The error clearly says (x,y,Z) are of not same size. Check the dimensions of each.
Varun Kumar
am 31 Mai 2019
Akzeptierte Antwort
Weitere Antworten (1)
Geoff Hayes
am 31 Mai 2019
Varun - your Z seems to be 1x4 array, but the x and y are 1x5. Your code
maxAllowablePoints = 5;
numPointsClicked = 0;
while numPointsClicked < maxAllowablePoints
numPointsClicked = numPointsClicked + 1;
[x(numPointsClicked), y(numPointsClicked), button] = ginput(1)
if button == 3
% Exit loop if
break;
end
end
Assuming that the button is never 3 (which I suppose it can) and since your numPointsClicked starts at zero, then your x and y can be (at most) of dmension 1x5. Just change maxAllowablePoints to 4 and you should be fine.
1 Kommentar
Varun Kumar
am 3 Jun. 2019
Kategorien
Mehr zu Creating, Deleting, and Querying Graphics Objects finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

