how can i solve this 'Inner matrix dimensions must agree.' error?

hello,i'm trying to make some gui that shows graph with variables a,b
but i'm matlab newb and have no idea what's wrong with my work
function varargout = untitled(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @untitled_OpeningFcn, ...
'gui_OutputFcn', @untitled_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
function untitled_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
global a b
t = 0:0.001:10;
A = a*sin(t*b);
plot(t,A)
function varargout = untitled_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
function slider1_Callback(hObject, eventdata, handles)
a = get(handles.slider1,'Value');
function slider1_CreateFcn(hObject, eventdata, handles)
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]);
end
function slider2_Callback(hObject, eventdata, handles)
b = get(handles.slider2,'Value');
function slider2_CreateFcn(hObject, eventdata, handles)
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]);
end

 Respuesta aceptada

James Tursa
James Tursa el 27 de Mzo. de 2015
Editada: James Tursa el 27 de Mzo. de 2015
Put global statement in your functions that set a and b so their values get back to your plotting function.
function slider1_Callback(hObject, eventdata, handles)
global a
a = get(handles.slider1,'Value');
function slider2_Callback(hObject, eventdata, handles)
global b
b = get(handles.slider2,'Value');
Or be consistent with your use of the end statement to end function definitions to make sure nested functions share the same variables.

2 comentarios

oh.. i think it doesnt work either...
James Tursa
James Tursa el 27 de Mzo. de 2015
Editada: James Tursa el 27 de Mzo. de 2015
First you need to decide how (or if) you are nesting your functions. Then you can address the global issue. In your above code, you have some functions with an end statement and other functions without end statements. This is confusing at best and you should fix this to be consistent with your nesting intent. You also need to make sure your functions that set a and b get called before your function that uses a and b. Or have your plotting function do nothing if either a or b is empty.
I guess I should explicitly point out that the error you are getting is because b is likely empty (size 0 x 0) and you are multiplying it by a non-empty vector t.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Etiquetas

Preguntada:

Hui
el 27 de Mzo. de 2015

Editada:

el 27 de Mzo. de 2015

Community Treasure Hunt

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

Start Hunting!

Translated by