У меня есть 100 моделей (матриц), где размер каждой матрицы составляет 4X3.Каждая из четырех переменных R_L
, N_g
, N_Pc
и uT
имеет размер 4x3x100, где 4X3 - это размер каждой матрицы, и существует 100 таких матриц.Я приложил снимок двух переменных, чтобы дать представление о том, что я имею в виду:
Я перебираю матрицу 1 первых трех переменных (то есть R_L
, N_g
, N_Pc
) и сравнение каждого элемента в матрице 1 этих переменных с элементами в других 99 матрицах.Я хочу найти те элементы, в которых все три переменные в этих 99 матрицах равны соответствующим трем переменным в любом элементе матрицы 1.
Например, если все три переменные в элементе (1,1) матрицы 1имеют соответственно одинаковые значения в элементе (2,2) матрицы 2, (2,1) матрицы 3, (2,4) матрицы 3 и т. д., тогда я выберу результаты из переменной 4 (т.е. uT
) ввсе вышеуказанные позиции элементов, т.е. (1,1) матрицы 1, (2,2) матрицы 2, (2,1) матрицы 3, (2,4) матрицы 3 и т. д. из uT
и сохраните эти результатыв новой переменной с именем store_result
, чтобы построить ее гистограмму.Это показано в приведенном ниже коде.
nModel=100;
ixk=1;
% looping inside model # 1
for k_model1=size(R_L,1):-1:1
for i_model1=1:size(R_L,2)
% comparing values in model 1 to values in model 2 to nModel
for model_no=2:nModel
% looping inside each model from model # 2 to nModel
for k=size(R_L,1):-1:1
for i=1:size(R_L,2)
if ismember(R_L(k_model1,i_model1,1), R_L(k,i,model_no)) &&...
ismember(N_g(k_model1,i_model1,1), N_g(k,i,model_no)) &&...
ismember(N_Pc(k_model1,i_model1,1), N_Pc(k,i,model_no))
index_for_identical_results(:,:,model_no)=intersect(ismember(R_L(k_model1,i_model1,1), R_L(k,i,model_no)),...
ismember(N_g(k_model1,i_model1,1), N_g(k,i,model_no)),...
ismember(N_Pc(k_model1,i_model1,1), N_Pc(k,i,model_no)));
end
end
end
end
store_result(:,ixk)=uT(index_for_identical_results(:,:,model_no));
ixk=ixk+1;
end
end
У меня есть следующие проблемы, на которые я хотел бы обратить внимание:
ismember
будет полезно, только когда значениясоответствовать точно.В случае, если нет точных аналогичных значений, что бы вы предложили, если бы я хотел дать определенный интервал, в пределах которого значения попадают, то его следует считать равным.
Поскольку я хочу найтисетка (элемент), где все три переменные равны, поэтому функция intersect
не будет работать здесь (даже если я использовал в коде выше).Что бы вы предложили использовать вместо intersect
, который может выполнять аналогичную функцию с несколькими переменными.
Спасибо.