[英]Matlab, interpolate non-square matrix keeping aspect-ratio
我有一個尺寸為27x4的矩陣,現在我想對矩陣進行插值並以相同的寬高比進行繪制。 我一直在使用interp2,但是因為它在每一步之后都在現有值之間填充值,所以矩陣的維數均為2 * n-1,這導致高度的增長快於寬度的增長。
是否有一種方法可以對矩陣進行插值,而僅用內插值填充新矩陣,而不用原始值進行插值,也就是說,將二維尺寸加倍?
我能想到的唯一方法是在較高的程度上對interp2進行插值,然后挑選出值,但這效率極低。
interp2
應該可以正常工作,它必須是您定義最后2個參數的方式。 嘗試這個:
Z = rand(4,27);
x = 1:27;
y = 1:4;
[X, Y] = meshgrid(x, y)
xi = linspace(1, 27, 1000);
yi = linspace(1, 4, 1000 * (4/27)); % The 4/27 here is what ensures you keep the aspect ratio
[XI, YI] = meshgrid(xi, yi);
ZI = interp2(X,Y,Z,XI,YI);
檢查長寬比
size(ZI,1) / size(ZI,2)
ans =
0.1480
size(Z,1) / size(Z,2)
ans =
0.1481
但基本上,您需要確保的是上面我的代碼中xi
和yi
的寬高比與您的原始寬高比匹配。 相當容易概括。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.