Finding corresponding values in data set

3 ビュー (過去 30 日間)
jrz
jrz 2022 年 9 月 16 日
コメント済み: Star Strider 2022 年 9 月 16 日
I have a set of matrices each with 4 columns. I want to extract the value of the 1st column corresponding to the 0 in the second column and plot that point. How can I do this? and for cases where there is no exact zero, interpolate between the two values that cross 0?
  2 件のコメント
Walter Roberson
Walter Roberson 2022 年 9 月 16 日
Is there always exactly one 0 or zero crossing, or could there be several?
are the values in that column sorted?
jrz
jrz 2022 年 9 月 16 日
yes there is only a single zero crossing or single 0 for each. The values in the columns are in ascending order, e.g. -5 at (1,) and 2 at (1,50)

サインインしてコメントする。

採用された回答

Star Strider
Star Strider 2022 年 9 月 16 日
編集済み: Star Strider 2022 年 9 月 16 日
I would just do the interpolation using interp1 since it will interpolate to 0 or the closest value to it.
Try this —
M = randn(10,4)
M = 10×4
-0.9697 -0.7712 -1.3959 1.3028 -1.7855 -0.0497 0.0510 -0.6687 -0.3479 0.4030 -0.8218 0.5535 0.6310 1.3745 -2.0030 -0.6301 -0.3321 -0.3106 0.8438 -0.4688 -2.2774 -0.0997 0.3758 -2.0011 -0.0985 0.6001 0.4742 0.0693 -1.8270 1.2099 0.1478 -0.5050 0.4731 -0.3345 1.4999 0.3136 -0.4747 -0.7732 0.6202 0.6346
L = size(M,1);
idx = find(diff(sign(M(:,2))))
idx = 4×1
2 4 6 8
for k = 1:numel(idx)
idxrng = max(1,idx(k)-1) : min(L,idx(k)+1);
Result(k,:) = interp1(M(idxrng,2), M(idxrng,:),0);
end
Result
Result = 4×4
-1.6276 -0.0000 -0.0449 -0.5344 -0.3390 -0.0000 0.1189 -0.0239 -1.9668 0 0.3898 -1.7060 0.2685 -0.0000 1.1328 0.2262
EDIT — Aesthetic tweaks.
.
  4 件のコメント
jrz
jrz 2022 年 9 月 16 日
so sorry for the confusion!, i misspoke in my reply. Thanks again for your help, i understand now
Star Strider
Star Strider 2022 年 9 月 16 日
As always, my pleasure!
No worries!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeInterpolation についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by