Unexpected MATLAB operator ':' In Simulink MATLAB Function Block
11 views (last 30 days)
Show older comments
I am building a Simulink block diagram that uses a MATLAB Function block. I've run an exact copy of the function in MATLAB, so I know all the syntax and structure (loops and if statements & paired ends, brackets) is correct. However, when I try to build the Simulink model I get the following error:
The line in question is shown below and is intended to find the number of unique values in the first column of 'deck'.
nAlt = length(unique(deck(:,1)));
Again I know it works when I run it in MATLAB, so I am assuming it is a problem with Simulink's C coder. I am having a similar index-related error on a later line:
Machs = sort([deck(1,2),Mach,deck(end,2)]);
Is there a way to get around this sort of error? I would really prefer not to mess around with different ways to do these operations, since I feel like the colon and end operators are pretty basic MATLAB syntax and would surely be supported for C code generation. Please let me know if you come up with a solution or need to see the full code.
3 Comments
Walter Roberson
on 9 Jul 2019
In Simulink it can be important not to change data type of a variable.
input = fopen('some_text_file','r');
deckcell = textscan(input,'%f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f','HeaderLines',1, 'collectoutput', 1);
fclose(input);
deck = deckcell{1};
There is a possibility that you might first have to use coder.varsize to define deck as 1 x 17 (with the 1 signalling that the actual dimension is variable.)
Answers (1)
akanksha srivastav
on 6 Sep 2023
I also faced same error in simulink-
received_signal_1=[zeros(round(target_delay*Fs),numAntennas);repmat(ref_signal(:),1,numAntennas)];
for this matlab_line it shows unexpected error.
0 Comments
See Also
Categories
Find more on Simulink Functions in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!