如何在MATLAB中用多点插补一点来解决误差

时间:2017-09-15 03:08:04

标签: matlab

我试图在MATLAB中将许多点插入到一点。但是我收到了错误

  

网格矢量未定义与给定值匹配的点网格。

我的代码如下:

A = [2 6;3 7]
B = [3 6;4 9]
Xq=[A(:,1) [10;10]]
Yq=interp1(A,B,Xq','linear','extrap')

实际上我想生成一条从许多点经过一个点的线,如下图所示,并向上延伸到图的轴 enter image description here

1 个答案:

答案 0 :(得分:2)

'For loop'将是一个解决方案。

就是一个例子。

A = [2 6;1 6;3 6]
B = [3 6;2 6;3 6]

L=size(A)
xArr=zeros(L(1), L(2));
yArr=zeros(L(1), L(2));

nLine=L(1); %number of lines

for k=1:nLine

    Xq=[A(k,:) 10]
    Yq=interp1(A(k,:),B(k,:),Xq','linear','extrap')

    xArr(:,k)=Xq';
    yArr(:,k)=Yq';
end
plot(xArr,yArr,'*-')

如果你不想使用for循环,你可以直接计算线性函数的梯度和截距。

A = [2 6;1 6;3 6]
B = [3 6;2 6;3 6]

L=size(A)

limX=10; %x limit

a=(B(:,2)-B(:,1))./(A(:,2)-A(:,1));  %gradient vector
b=B(:,1)-a.*A(:,1); % intercept vector
y=a*limX+b % linear function

Aq=[A';limX*ones(1,L(1))];
Bq=[B';y'];

figure(2)
plot(Aq,Bq,'*-')