Разделение массива на отдельные массивы в строке с NaN с использованием функционального блока Matlab в Simulink - PullRequest
0 голосов
/ 30 октября 2019

Я имел дело с проблемой разделения массива. У меня есть 2D-массив значений 1500 * 1, который содержит значения NaN между ними. Мне нужно разделить их на разные массивы и использовать ТОЛЬКО массивы, в которых есть значения. Затем нормализуйте массивы значениями и найдите значение 36,8% из нормализованного значения.

`idx=all(isnan(out.DEC),2);
idr=diff(find([1;diff(idx);1]));
D = mat2cell(out.DEC,idr(:),size(out.DEC,2));
A=D{2,1};
B=D{4,1};
C=D{6,1};
Norm_A=normalize(A,'range');
time_A=transpose(ts:ts:ts*length(Norm_A));
Matrix_A=[time_A(:,1) Norm_A(:,1)];
A_time_interpolant =(0:ts:max(time_A)).';
Matrix_A_interp = [A_time_interpolant interp1(Matrix_A(:,1),Matrix_A(:,2),A_time_interpolant,'spline')];
AA=length(find(0.368>Matrix_A_interp(:,2)<0.3681));
Decay_A=A_time_interpolant(AA);`

Это код, который я пытался использовать с использованием значений хардкора. Но возможно ли это сделать в Simulink? Я пытаюсь реализовать это на Simulink с помощью функционального блока. Я понимаю, что мы можем использовать блок задержки блока. Но я не знаю, как двигаться дальше. Более того, команда mat2cell также не поддерживается в интерфейсе Simulink. Может ли кто-нибудь, пожалуйста, помогите мне, как реализовать этот код в качестве блока Simulink функции MATLAB? Любая помощь приветствуется.

Спасибо Рамкумар Ганеш

...