如何根据他人的元素创建一个新矩阵?

时间:2019-09-16 12:22:42

标签: arrays matlab

我想挑选出

(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 个答案:

答案 0 :(得分:0)

和其他人一样,我不确定您想要什么。这是我的理解方式并将其编码:

  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处于合理范围内时才有效,否则这种方法不是最优的