如何从另一个元素创建一个新矩阵?



我想挑选出以下元素:

(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

它可以找到我想要的东西,但它们似乎没有按照我想要的方式订购。

和其他人一样,我有点不确定你想要什么。以下是我的理解和编码方式:

  1. 检查(2*pi*k)是否包含在A中,您需要数值方法
  2. 输出二进制结果

代码如下:

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在合理范围内时才有效,否则这种方法是次优

最新更新