- Сначала определите
r
вне цикла for
r =zeros(size(0:0.1:1.4));
Для индексации r внутри цикла for вам нужно целое число, M - число с плавающей запятой.
Вы можете просто определить дополнительный индекс i
- Также вам не нужно указывать
r
индексы при печати, если вы хотите
построить весь массив, и не забудьте сохранить абсциссу как
0:0.1:1.4
Код следующий
N=60;
t=3;
K=130;
i = 0;
r = zeros(size(0:0.1:1.4));
for M=0:0.1:1.4
i = i+1;
f=le(1/K,M);
c=le(M,3*N/K);
if f || c
R2 = @(s) -(s-(s./ floor(N./s)).*M);
LB = 1;
UB = min(N, K);
options = optimoptions('fmincon','Algorithm','interior-point'); % run interior-point algorithm
[sopt, ropt] = fmincon(R2,1,[],[],[],[],LB,UB,[],options);
r(i) = -ropt;
end
end
plot(0:0.1:1.4,r,'r-','LineWidth',2);
xlabel('Cache Capacity (M)');
ylabel('Delivery Rate (R)');
В качестве альтернативы вы можете просто предопределить все M
элементы как M = 0:0.1:1.4
, а затем выполнить цикл, используя целочисленный индекс, который также можно использовать при индексации r
Соответствующий код выглядит следующим образом
N=60;
t=3;
K=130;
M = 0:0.1:1.4;
r = zeros(size(M));
for i = 1:length(M)
f=le(1/K,M(i));
c=le(M(i),3*N/K);
if f || c
R2 = @(s) -(s-(s./ floor(N./s)).*M(i));
LB = 1;
UB = min(N, K);
options = optimoptions('fmincon','Algorithm','interior-point'); % run interior-point algorithm
[sopt, ropt] = fmincon(R2,1,[],[],[],[],LB,UB,[],options);
r(i) = -ropt;
end
end
plot(0:0.1:1.4,r,'r-','LineWidth',2);
xlabel('Cache Capacity (M)');
ylabel('Delivery Rate (R)');
График