如何编写用于识别矩阵中奇数位置的函数

时间:2018-05-31 13:37:27

标签: arrays matlab user-defined-functions

如何创建一个在奇数位置生成所有元素的函数(例如1,1 1,3),如果说... 5乘8矩阵?

2 个答案:

答案 0 :(得分:0)

我假设“奇数”是指行列的索引都是奇数。这意味着你得到的矩阵应该是3乘4.无论如何,你的代码在下面。

function Anew = yourFunc(A)
   %Create a test matrix of dimensions 5x8 of random numbers from 1-10
   A = randi(10,5,8);
   %Set the values of all elements with either index being an even number equal to zero
   for r = 1 : size(A,1)
       for c = 1 : size(A,2)
           if rem(r,2) == 0 || rem(c,2) == 0
              A(r,c) = 0;
           else
              continue
           end
       end
   end
   %Delete rows that contain ALL zeros
   for r = 1 : (size(A,1)/2) + 1
       if A(r,:) == 0
           A(r,:) = [];
       end
   end
   %Delete columns that contain ALL zeros
   for c = 1 : (size(A,2)/2) + 1
      if A(:,c) == 0
         A(:,c) = [];
      end
   end
   %State final answer
   Anew = A;
end

请注意,可能有一个更有效的代码解决方案,但我从未学过计算机科学(不是我的工程学科),所以我不知道任何花哨的东西。

答案 1 :(得分:0)

索引将以最大可能值停止。因此索引x = 1:2:4将生成x = [1 3]。 x = 1:2:1将生成x = 1.所以现在您只需要确定每个矩阵行和列中有多少个元素。

Pro-Tip :在您编写的任何代码中都可以使用length()函数进行索引。使用下面的代码,A可以是任何大小的矩阵。这可以防止在更改要分析的矩阵时需要更改代码。

for row=1:2:length(A(:,1))
  for col=1:2:length(A(1,:))
    % do some operation on A(row,col)
  end
end