矩形空矩阵错误的分配不正确

时间:2016-03-14 09:44:18

标签: matlab

我有以下代码(见下文),我希望这是不言自明的。当我使用VEC A1 / B1或VEC A2 / B2运行代码注释掉相关位时,代码可以正常工作。但是当我使用数组A和B这是我实际打算做的时候,matlab给了我以下错误:

使用矩形空矩阵进行不正确的赋值。

它表示错误出现在以下代码行中:

 prePr(j,:)=a(a>B(j) & a<B((j+1)))

这表明它在i = 1时正确地循环,但在i = 2时卡住,这是我无法理解的。如果有人可以提供建议,那将是一个很大的帮助。谢谢。

RatePu=31.25;
RatePr=250;

ratioRate=RatePr/RatePu;

A=[1:3,5:11,13:19;2:8,10:16,18:20;];     
B=[4,12,20;1,9,17;];


% A=[1:3,5:11,13:19;];   % VEC A1
% A=[2:8,10:16,18:20;];  % VEC A2

% B=[4,12,20;];   % VEC B1
% B=[1,9,17;];   % VEC B2


  NumTP=size(A,1);


 prePr=zeros(length(B),ratioRate-1);

 for i=1:NumTP

     a=A(i,:);
     b=B(i,:);


  if b(1)==1
    for j=1:length(b)-1


   prePr(j,:)=a(a>B(j) & a<B((j+1)))

    end




   elseif b(1)>1

    for j=1:length(b)


  if j==1

        prePr(j,1:max(a(a<(b(1)))))=a(a<b(j)) ;

   else

         prePr(j,:)= a(a>b(j-1) & a<b((j-1)+1))
  end

    end

  end

 end

1 个答案:

答案 0 :(得分:0)

因为对于i = 2,你有prePr是一个空矩阵。

我会建议:

x==a(a>B(j) & a<B((j+1)));
 if numel(x)==0
  prePr(j,:)=NaN;
 else
  prePr(j,:)=x;
 end