我想挑选出以下元素:
(2*pi*k(,
其中k=0,1,2,3...,表示整数,并将它们 (i1( 填充到另一个矩阵中。
但我的问题是,我不知道如何使"k">成为行。(顺便说一下,股息和除数是浮动的,所以我需要找到近似值并将它们视为2*pi*k(。
我的代码,只能找到(2*pi*k(的元素,但不能像k=1那样对它们进行排序,那么它将被放入k = 1行;如果k=2,那么该元素应该放入k=2行。
例如
A = [2*pi 6 3 4;0.5*pi 0 2;3.1 7 4 8;2*pi 7 2 9;2.6 4*pi 6*pi 0]
我希望输出是
B = [0 2*pi 4*pi 6*pi;0 2*pi NaN NaN;NaN 2*pi NaN NaN]
这是我的代码:
k=0;
for m=380:650;
for n=277:600;
if abs((rem(abs(i(m,n)),(2*PI)))-(PI))>=3.11;
k=k+1;
B(m,k)=i1(m,n);
end
end
k=0;
end
它可以找到我想要的东西,但它们似乎没有按照我想要的方式订购。
和其他人一样,我有点不确定你想要什么。以下是我的理解和编码方式:
- 检查
(2*pi*k)
是否包含在A
中,您需要数值方法 - 输出二进制结果
代码如下:
testPI=@(k) (2*pi*k); %generates 2*pi*k, where k is up to the user
A = [2*pi 6 3 4;0.5*pi 0 2 0;3.1 7 4 8;2*pi 7 2 9;2.6 4*pi 6*pi 0]; %A from example (fixed dimension error)
ismember(A,f(1:10)) %test if k=1:10 is contained in A
ans =
5×4 logical array
1 0 0 0
0 0 0 0
0 0 0 0
1 0 0 0
0 1 1 0
使1:10
适应您想要的任何值。当然,这仅在k在合理范围内时才有效,否则这种方法是次优