Как преобразовать этот скрипт MATLAB в SCILAB?

#matlab #scilab

#matlab #scilab

Вопрос:

 % P0211a: To prove that the system T1[x(n)] = x(n)u(n) is linear
clear; clc; close all;
n = 0:100; x1 = rand(1,length(n));
x2 = sqrt(10)*randn(1,length(n)); u = stepseq(0,0,100);
y1 = x1.*u; y2 = x2.*u; y = (x1   x2).*u;
diff = sum(abs(y - (y1   y2)));
if (diff < 1e-5)
disp(’ *** System-1 is Linear *** ’);
else
disp(’ *** System-1 is NonLinear *** ’);
end
 

—Я не могу найти эквивалент команды stepseq для scilab. спасибо

Комментарии:

1. Насколько я знаю, у Scilab нет такого эквивалента. На самом деле stepseq это даже не собственная функция MATLAB. Вероятно, вам придется найти stepseq , где бы вы ни нашли этот фрагмент кода, и перевести его в Scilab самостоятельно.

Ответ №1:

Вот перевод (код stepseq, найденный с помощью простого поиска в Google). Единственное, что я изменил в вашем коде, это символы комментариев ( // вместо % ) и вызов randn(..) (изменен на rand(...,"normal") )

 // P0211a: To prove that the system T1[x(n)] = x(n)u(n) is linear
clear; clc; close all;

function [x,n] = stepseq(n0,n1,n2)
  n=n1:n2;
  x = [(n-n0)>=0];
end

n = 0:100; x1 = rand(1,length(n));
x2 = sqrt(10)*rand(1,length(n),"normal"); u = stepseq(0,0,100);
y1 = x1.*u; y2 = x2.*u; y = (x1   x2).*u;
diff = sum(abs(y - (y1   y2)));
if (diff < 1e-5)
  disp(" *** System-1 is Linear *** ");
else
  disp(" *** System-1 is NonLinear *** ");
end
 

Комментарии:

1. И что? Вы проверяли выше?