- 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 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Sourasis Chattopadhyay
am 8 Dez. 2022
Bearbeitet: Stephen23
am 8 Dez. 2022
function [facilities,R,Dij,E,C]=a(r1,r2,d1,d2,i,j)
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?
Akzeptierte Antwort
DGM
am 8 Dez. 2022
Bearbeitet: DGM
am 8 Dez. 2022
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
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!