Using assignin command in guide
7 次查看(过去 30 天)
显示 更早的评论
%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.
0 个评论
采纳的回答
TAB
2012-7-5
编辑:TAB
2012-7-5
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.
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
0 个评论
更多回答(1 个)
C.J. Harris
2012-7-5
编辑:C.J. Harris
2012-7-5
1. You cannot index into variables while using assignin. Therefore trying to assign the value 'red' to C(a,:) will not work.
2. The size of the char matrix C is a 3x3. So even if your use of assignin was correct you would get a size mismatch error when trying to assign the values of 'black' or 'blue' which are of length 5 and 4 respectively, and would not fit into your matrix.
You probably need to rethink the structure of your code. Do you really need to use assignin in this way?
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Migrate GUIDE Apps 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!