我有以下代码(见下文),我希望这是不言自明的。当我使用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
答案 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