problem in calling a function, it does not recognize "switch case"
显示 更早的评论
Please suggest the solution for the following problem. I am doing this in MATLAB 2021a. Thanks
I have three functions (1). function DSSK_Cons_Diagram = DSSK_Cons_Diagram_Gen(Nt )
(2). function DSM_Cons_Diagram=DSM_Cons_Diagram_Gen(Nt ,M)
(3). function DSMTConstellation_Mat = DSMT_Cons_Diagram_Gen(DSMT_SyS ,Nt ,M)
(1) and (2) works properly when I call them separately in the command window but the (3) has a problem it always says "unknown system". To call (3), I am writing like this,
DSMT_SyS =["dssk", "dsm"]; %DSMT_SyS is A string indicating the DSMT system for :
% −’DSSK’ for differential space shift keying ;
% − DSM’ for differential spatial modulation .
Nt=2,M=2;
DSMT_Cons_Diagram_Gen(DSMT_SyS ,Nt ,M)
The (3) is written here,
function DSMTConstellation_Mat = DSMT_Cons_Diagram_Gen(DSMT_SyS ,Nt ,M)
switch lower(DSMT_SyS)
case 'dssk'
DSMTConstellation_Mat = DSSK_Cons_Diagram_Gen(Nt ) ;
case 'dsm'
DSMTConstellation_Mat = DSM_Cons_Diagram_Gen(Nt ,M) ;
otherwise
error('Unknown system' )
end
end
8 个评论
Stephen23
2022-7-11
You cannot supply SWITCH with a non-scalar string array as you are doing, you must provide it with a scalar string (or a character vector). You could use a loop, ARRAYFUN, or CELLFUN.
Dyuman Joshi
2022-7-11
编辑:Dyuman Joshi
2022-7-11
1 - Your input is string and the comparison is done with char (switch statement)
2 - Your input is an array while the comparison is done for a (singular) element
EDIT - My first statement is incorrect, as showed by Stephen below.
@Dyuman Joshi: the SWITCH operator accepts STRING objects (and all objects that have an EQ method):
str = "hello"; % string
switch str
case 'hello'
disp world
otherwise
disp failed
end
The problem is that the OP provides a non-scalar string array.
Dyuman Joshi
2022-7-11
@Stephen23, I was not aware of this. Thanks for the info. I will edit my comment accordingly.
Also, If you don't mind me asking, What do you mean by EQ method?
Sajid Sarwar
2022-7-11
"What do you mean by EQ method?"
methods('string')
Dyuman Joshi
2022-7-11
Oh, okay, eq is short for equality, alright. Thanks for the info, it's quite helpful!
Steven Lord
2022-7-11
Most of the operators have a function associated with them that you can overload to overload that operator (for example, plus is the function you overload to customize how your class works with the + operator.) See the table on this documentation page for more information about the operators and their corresponding function forms.
回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Data Type Conversion 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!