array_1 = zeros(1,9);
array_2 = zeros(500,16);
With the increase in time I will be concatenating arrays one and two into array3. I tried it by doing this:
array_3 = [array_1,array2];
Since, they are not from the same size, they can´t be concatenated.
Any ideas on how can I save them?

 Akzeptierte Antwort

Stephen23
Stephen23 am 3 Mai 2020

0 Stimmen

3 Kommentare

Mariana
Mariana am 3 Mai 2020
Bearbeitet: Mariana am 3 Mai 2020
Is it better to use an cell array or an structure?
When I create a structure as an output of a matlab function in my simulink. I get an error that I need to create a bus object.
%Initialize array
array_3 = cell(100,2);
array_3 {Counter,1} = array_1;
array_3 {Counter,2} = array_2;
I get this error if I try it the with cell arrays.
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.
Stephen23
Stephen23 am 3 Mai 2020
"Is it better to use an cell array or an structure?"
It depends entirely on what you are doing:
  • if your data have an inherent sequence, then use a container array which can be accessed using indices (e.g. cell array, non-scalar structure, table rows).
  • if your data are best identified by parameter names, then use a container array which lets you use names (e.g. structure, table columns).
Use the simplest data type that can reasonably hold your data, as this will simplify your code.
How to initialize the cell array?
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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Produkte

Version

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by