Как уйти от двойного цикла for

Обсуждение вопросов, связанных с Partial Differential Equations Toolbox и Comsol MultiPhysics (Femlab)Анализ данных и статистика в MATLAB. Проектирование систем управления в MATLAB\Simulink

Модератор: Admin

juho
Пользователь
Сообщения: 39
Зарегистрирован: Пт мар 28, 2014 8:53 am

Как уйти от двойного цикла for

Сообщение juho » Вс мар 01, 2020 6:51 pm

Коллеги добрый вечер. Подскажите пожалуйста как уйти в программе от двойного цикла for. Заранее благодарю и если нетрудно прошу немного объяснить решение. Спасибо.

Ниже представлен рабочий код

tic
x = 1:1:10; %Количество шагов в скоростной характеристике, шаг
y = 1000:100:1900; %Характеристика оборотов дизель-генератора, об/мин
f = [225 220 212 208 205 204 204 205 208 212]; %Характеристика удельного потребления дизель-генератора, гр/кВт*ч
P = [210 240 270 300 330 360 390 405 400 410]; %Характеристика мощности дизель-генератора, кВт
xj=0:0.01:length(x); %Формирование массива промежуточных значений аргумента с шагом 0,01
Oboroty=interp1(x,y,xj,'linear'); %Промежуточные значения линейной интерполяции
Fuel=interp1(x,f,xj,'linear'); %Промежуточные значения линейной интерполяции
P=interp1(x,P,xj,'linear'); %Промежуточные значения линейной интерполяции
Massiv1(:,1) = ceil(Oboroty(~isnan(Oboroty)));
Massiv1(:,2) = ceil(Fuel(~isnan(Fuel)));
Massiv1(:,3) = ceil(P(~isnan(P)));

time = 744; %Время расчета, ч
Load = round(randi([300 400], time, 1)); %Случайная электрическая нагрузка, кВт
Percent = round(Load / 400 * 100); %Коэффициент загрузки дизель-генератора
Par = zeros(length(Load),1); %Формирование нулевых значений
for i = 1:length(Load)
for j = 1:length(Massiv1)
if Load(i) == Massiv1(j,3)
Par(i,1) = Massiv1(j,1);
Par(i,2) = Massiv1(j,2);
Par(i,3) = Massiv1(j,3);
end
end
end
Massiv2 = [Par, Percent]; %Итоговый массив данных
toc