EDA365电子论坛网

标题: 采用MTALAB Function将一维数组分成多个一维数组 [打印本页]

作者: ytm    时间: 2019-12-10 10:45
标题: 采用MTALAB Function将一维数组分成多个一维数组
当一维数组中元素较多时,比如是1*n的数组,将1*n的数组分成长度分别为a,b,..,x的不同一维数组输出,请问用matlab function怎么实现呢?0 ~! k) @. Q9 m( j! \
我自己写了一个程序,但是长度只能是固定的,比如程序中的len=[5,10,3,4],我想将len从外部输入。我想知道从外部输入所有的长度,应该怎么修改呢?
8 ^9 t; R8 g; t; ], t' r! q3 [
5 `" r0 X2 V0 Z9 l+ t5 e% Tn为输入一维数组,n是要输出的第n个分开后的数组  G9 G1 g, X& ^: [8 T
function Tm=monotonization(Tn,n)
+ s8 o* g5 U& F, Z& e4 Xlen=[5,10,3,4];% `& Y* B& J+ {. o
id = [0 cumsum(len)];' h5 h/ Q/ A5 ]0 v3 m
m=n;) V1 c/ y1 q' a* ^
Tm=Tn(id(m)+1:id(m+1));2 r6 U0 \: p- V. e  h7 {2 V& k
end
& g7 p  `! s: q  e7 Z/ g) \# E6 l
作者: fawa    时间: 2019-12-10 17:52
MATLAB Function block要求输入输出的大小事先确定。一种做法是输出都是和Tn一样长,但是有一个另外的输出告诉下一个模块哪些是有效输入,像这样" U: Q! F9 N; [0 @; B- n

0 v; {9 ]. l0 e! K  vfunction [Tm,Lm]=monotonization(Tn,len,n)
3 J  g+ f$ \. W4 f" Q3 j; nid = [0 cumsum(len)];1 G1 T7 f8 f! B1 h
m=n;
& J5 T( p7 F% j% {Tm = nan(size(Tn))
/ i, z5 U* p8 ?1 J/ f6 N  kLm = len(m);1 _% R0 ^6 J" p; I
Tm(1m)=Tn(id(m)+1:id(m+1));
" h; L7 e* e, }( u/ x! A+ w8 f; send




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2