- At which line of code the error occured?
- What was the value of variables entering the expression on that line?
Same code I can successfully run in R2021b but in R2016a it is showing Error using - Matrix dimensions must agree. What should I change to run this in R2016a?
1 次查看(过去 30 天)
显示 更早的评论
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1223782/image.png)
tic
facilities=(1:i)';
R = randi([r1 r2],[i 2]);
R(:,2)=(R(:,1))+(R(:,2));
Dij=randi([d1 d2],[i,j]);
E=zeros(i,1);
E(:)=10^-6;
for m=1:i
for n=1:j
C = max((R(:,2)-Dij(:,:)),0)./max(max((R(:,2)-R(:,1)),(R(:,2)-Dij(:,:))),E(:,1));
n=n+1;
end
m=m+1;
end
toc
end
% Same code I can successfully run in R2021b but in R2016a it is showing Error using - Matrix dimensions must agree. What should I change to run this in R2016a?
采纳的回答
DGM
2022-12-8
编辑:DGM
2022-12-8
R2016b introduced implicit array expansion. You're relying on that. The loops are also unnecessary.
i = 10;
j = 5;
r1 = 1;
r2 = 10;
d1 = 1;
d2 = 10;
facilities=(1:i)';
R = randi([r1 r2],[i 2]);
R(:,2)=(R(:,1))+(R(:,2));
Dij=randi([d1 d2],[i,j]);
E=zeros(i,1);
E(:)=10^-6;
num = max(bsxfun(@minus,R(:,2),Dij),0);
den = max((R(:,2)-R(:,1)),E(:,1)); % these terms agree
den = bsxfun(@max,bsxfun(@minus,R(:,2),Dij),den);
C = num./den;
I tested this in R2015b
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!