我需要根据根绘制一个函数,可以使用poly()获取多项式。但是,每当我运行该函数时,都会给我一个错误。我希望能够解决该错误,以便继续实现自己的进一步目标。
我需要相对于我提供的时间域绘制函数,相对于采样指数nVec乘以采样率deltaT绘制函数,然后绘制离散信号。我现在停下来,因为我无法绘制连续信号(第一幅图)。它一直给我一个错误。我尝试将根(rootsVec)从负包含更改为纯正,因此我可以从poly()获得等式,并随时间增加采样率,但无济于事。
function [tVec,nVec,xVec] =
fxNthOrderPolyDTSignal(domainVec,noOfSamples,rootsVec)
DSIntervals = noOfSamples - 1;
deltaT = (max(domainVec) - min(domainVec))/DSIntervals;
%time = input("Please input a specific time within the domain: ");
nVec = min(domainVec)/deltaT;
tVec = min(domainVec) + (nVec * deltaT);
Eqtn = poly(rootsVec);
x = linspace(domainVec(1),0.5,max(domainVec));
figure(1)
plot(Eqtn(x),x)
figure(2)
plot(Eqtn,(nVec*deltaT))
end
预期结果只是带有以下输入参数的信号图: domainVec = [-10,10](这是信号存在的时间);
noOfSamples = 30;
rootsVec = [-3,8](又称二阶多项式);
实际结果是以下错误:数组索引必须为正整数或逻辑值。
答案 0 :(得分:0)
检查此代码,正确命名变量,使用更多信号处理样式...
n = 10时,您将开始看到离散化。
function [t,x,dt] = f(tlim,n,p)
%% Function (Press 'Run Section' from here)
% Parameters (Delete these for function to work)
tlim=[-10 10];
n=30;
p=[-3 8];
% Polinomial Coefficients from Roots
a=poly(p);
% Sampling Time
dt=(tlim(2)-tlim(1))/n;
% Evaluate
t=linspace(tlim(1),tlim(2),n)';
x=a(1)*t.^0+a(2)*t.^1+a(3)*t.^2;
% Plot
plot(t,x)
答案 1 :(得分:0)
我知道了。这是对我的问题的正确答案。谢谢您的帮助!
function [tVec,nVec,xVec] =
fxNthOrderPolyDTSignal(domainVec,noOfSamples,rootsVec)
deltaT = (max(domainVec) - domainVec(1))/noOfSamples;
nVec = [0 : noOfSamples];
tVec = [];
for i = nVec
tVec(end + 1) = min(domainVec) + (i*deltaT);
end
nomial = poly(rootsVec);
xVec = polyval(nomial,tVec);
subplot(3,1,1)
plot(tVec,xVec)
title('x(t)')
subplot(3,1,2)
stem(tVec,xVec)
title('x[n]')
subplot(3,1,3)
stem(tVec,tVec*0)
title('x(nDeltaT)')
end