problem in calling a function, it does not recognize "switch case"
Mostra commenti meno recenti
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 Commenti
Stephen23
il 11 Lug 2022
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
il 11 Lug 2022
Modificato: Dyuman Joshi
il 11 Lug 2022
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
il 11 Lug 2022
@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
il 11 Lug 2022
"What do you mean by EQ method?"
methods('string')
Dyuman Joshi
il 11 Lug 2022
Oh, okay, eq is short for equality, alright. Thanks for the info, it's quite helpful!
Steven Lord
il 11 Lug 2022
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.
Risposte (0)
Categorie
Scopri di più su Data Type Conversion in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!