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.

采纳的回答

TAB
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.
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

更多回答(1 个)

C.J. Harris
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?

类别

Help CenterFile Exchange 中查找有关 Migrate GUIDE Apps 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by