rem*_*emo 7 arrays indexing matlab vector
我在MATLAB,A和B中有两个向量.B包含一些索引(1到结束).我有一个随机索引R(在矢量索引的范围内).我想编写一个函数(或语句)来选择A [z],其中z是R中最近的数字(即索引),不包括在B.
例:
A = [2 3 6 1 9 7 4 5 8]
B = [3 4 5 6 7 8]
R = 5
Run Code Online (Sandbox Code Playgroud)
函数必须返回3,因为最接近的索引是2,因为5-2 <9-5和2不在B中,所以A [2] = 3;
谢谢
改善雅各布的答案,这是正确的解决方案:
[result, z] = min(abs(R - setxor(B, 1:numel(A))))
Run Code Online (Sandbox Code Playgroud)
在你的情况下,收益率z = 2
和result = A(2) = 3
.
请注意 setdiff 和 setxor 函数对结果进行排序。
tmpSet = R - setdiff(1:numel(A),B);
[~,z] = min(abs(tmpSet));
z = tmpSet(z);
Result = A(R-z);
Run Code Online (Sandbox Code Playgroud)
问题中的同一示例:
A = [2 3 6 1 9 7 4 5 8]
B = [3 4 5 6 7 8]
R = 5
tmpSet = 5 - {1 2 9} = {4 3 -4}
z = 2
z = 3
Result = A(5-3) = A(2) = 3
Run Code Online (Sandbox Code Playgroud)
谢谢你的想法。
归档时间: |
|
查看次数: |
205 次 |
最近记录: |