Why I get an error when generating a cell array as an output of a simulink function?
    2 views (last 30 days)
  
       Show older comments
    
function y = (input,vector)
    persistent count
    persistent array_3
    persistent array_2
    persistent array_1
    persistent Matrix
    if isempty (array_3) 
       array_3 = cell(1000,2); 
       %array_3 = cell(repmat({zeros(1,9)}, 100, 1),repmat({zeros(1,9)}, 100, 2));
       count = 0;
       array_1 = zeros(1,9);
       array_2 = zeros(500,16);
    end   
    %Merge
    Matrix(1:500,1:15)= data;
    Matrix(1:500,16)= input;
    %Look through the data
    peak = find(Matrix(:,16)== 1);
    val = length(peak);
    if val > 5
        Counter = Counter + 1; 
        array_3{Counter,1} = array_1;
        array_3{Counter,2} = array_2;
    end
 y = array_3;
Error: 
Simulink does not have enough information to determine output sizes for this block. If you think the errors below are inaccurate, try specifying types for the block inputs and/or sizes for the block outputs.
Component:MATLAB Function | Category:Coder error
Cell arrays as top-level function outputs are not supported in MATLAB Function Block. Output 'Output' is a cell array.
0 Comments
Answers (1)
  Mark McBroom
    
 on 3 May 2020
        First, it looks like you ahve a typo... should "Counter" be "count"?  But that isn't the reason for the error.  I think the problem is that even though your code says the kength of array_3 is 1000, the body of the code can go beyond 1000.  Try changing this line to be:
if val > 5 && count < 999
Thanks.
Mark.
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!
