MATLAB: Using assignin command in guide

guideMATLABpopupmenu

%The below line is in base workspace
C = char('red','red','red');
%The below code is in gui created by guide.
a = get(handles.popupmenu1,'Value') % Based on value from popup menu1 i have to decide where i should set option selected in popup menu2
val = get(handles.popupmenu2,'Value');
switch val
case 1
assignin('base','C(a,:)','red');
case 2
assignin('base','C(a,:)','blue');
case 3
assignin('base','C(a,:)','black');
end
It shows an error Invalid variable name "C(a,:)" in ASSIGNIN.

Best Answer

switch val
case 1
evalin('base',['C(' num2str(a) ',:)=''abc''']);
case 2
evalin('base',['C(' num2str(a) ',:)=''lmn''']);
case 3
evalin('base',['C(' num2str(a) ',:)=''xyz''']);
end
As your matrix C is predefined as 3x3, you can not assign C(a,:)='blue' because 'blue' has 4 columns while all rows in your matrix contain 3 columns.
Use cell array for such operations.
Using cell array, in base workspace
C={'red','red','red'};
In GUI function
switch val
case 1
evalin('base',['C{' num2str(a) '}=''red''']);
case 2
evalin('base',['C{' num2str(a) '}=''blue''']);
case 3
evalin('base',['C{' num2str(a) '}=''black''']);
end