MATLAB Answers

Error using patch Vectors must be the same lengths.

9 views (last 30 days)
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 Comments

KSSV
KSSV on 31 May 2019
The error clearly says (x,y,Z) are of not same size. Check the dimensions of each.
Varun Kumar
Varun Kumar on 31 May 2019
but (x,y,Z) are of same dimension (1row, 4columns)

Sign in to comment.

Accepted Answer

Stephen Cobeldick
Stephen Cobeldick on 3 Jun 2019
Edited: Stephen Cobeldick on 3 Jun 2019
The problem is very simple: you never actually convert the string data to numeric.
Replace all of your Z definitions with this:
Z = str2double({X1,X2,X3,X4});
You will also need to pay attention that x and y have the same number of elements as Z, or otherwise have permitted sizes according to the patch documentation (your code does not do this).

  3 Comments

Varun Kumar
Varun Kumar on 3 Jun 2019
tahnk you Cobeldick, i have modified the code as you suggested Z is now showing properly but error appears again i dont know why, i am using 2013 matlab version
Geoff Hayes
Geoff Hayes on 3 Jun 2019
varun - your verson of MATLAB may require you to use a property name to indicate the axes. Try doing
patch(x,y,Z, 'Facecolor', 'interp', 'Parent', handles.axes1)
Varun Kumar
Varun Kumar on 3 Jun 2019
thank you so much it worked but one thing complete patch is having same color. i am using the 2013b version is that the reason

Sign in to comment.

More Answers (1)

Geoff Hayes
Geoff Hayes on 31 May 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 Comment

Varun Kumar
Varun Kumar on 3 Jun 2019
still same error is appearing eventhough i changed maxAllowablePoints to 4. z is being shown as in figure below i dont know is it vector or not there is no space between elements
2019-06-03_10h16_57.png

Sign in to comment.

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!