Finding corresponding values in data set

10 ビュー (過去 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 件)

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by