【发布时间】:2020-12-07 08:25:42
【问题描述】:
我有两个矩阵n*n(在本例中为n = 51)。一个矩阵被命名为Q1。第二个矩阵是Q2。两个矩阵都对应于概率(即在[0,1] 之间)。理论上Q1+Q2 = 1(但在本例中不一定如此,因为我删除了一些值和其他Q3 Q4 等以简化此示例的问题)。
我正在尝试查找每一行(或列)中的索引,使得Q1 的值最接近q_val(1),而Q2 的值最接近q_val(2)。
数据可以在这里找到:http://www.filedropper.com/stackoverflowdata
当我分别计算每个矩阵中最接近的值时,我最终得到两条曲线(见下图,或复制粘贴代码并绘图)。但是我想找到一条最近的曲线。
如何在Q1 和Q2(每一行或每一列)中找到最接近q_val 的一组索引?
q_val = [0.41 0.52];
for i = 1:length(u_vec)
tmp1 = abs(Q1(:,i)-q_val(1));
tmp2 = abs(Q2(:,i)-q_val(2));
ind1 = find(tmp1==min(tmp1));
ind2 = find(tmp2==min(tmp2));
v1(i) = v_vec(ind1);
v2(i) = v_vec(ind2);
end
[U,V] = meshgrid(u_vec,v_vec);
figure
subplot(1,2,1)
hold on
pcolor(U,V,Q1)
plot(u_vec,v1,'k',u_vec,v2,'r','linewidth',1.5)
shading interp
xlim([2 2.2])
title('Q1')
subplot(1,2,2)
hold on
pcolor(U,V,Q2)
plot(u_vec,v1,'k',u_vec,v2,'r','linewidth',1.5)
shading interp
xlim([2 2.2])
xlabel('u');ylabel('v')
title('Q2')
【问题讨论】:
标签: matlab interpolation minimization