我有一个2d矩阵Ac(yr,j)
。
我希望它将它的每个值与另一个1D数组进行比较,并存储绝对最小值的数组值。
for yr=1:32,
for j=1:12,
for in=1.5:1:32.5,
actin=Ac(yr,j);
kar(in-0.5)=abs(in-actin);
dab(yr,j)=min(kar(kar>=0));
end
end
end
我能够找到最小的正值,但不能找到in
的值。
答案 0 :(得分:0)
您需要调用max,如下所示,以获取索引而不是值。
[~, dab(yr,j)] = min(kar(kar>=0));
为了摆脱嵌套循环,你可以尝试arrayfun。定义要对每个数组元素执行的操作。
function [index] = myMinFunction(value, data)
[val, index] = min(abs(data - value));
end
执行定义的操作。
dab = arrayfun(@(x)myMinFunction(x, in), Ac)
答案 1 :(得分:0)
您的代码需要工作,我猜测in
是您要比较的数组。
开始时,你可以摆脱第三个for循环,然后执行:
actin=Ac(yr,j);
kar = abs(in-actin)
最后一个表达让我困惑: kar总是> = 0(来自abs函数)所以你不需要检查它...更糟糕的是,它总会返回1!所以你会永远得到kar的第一个索引。你试过了吗?
dab(yr,j)=min(kar);