矩阵:在MATLAB中编写一个函数,返回满足以下属性的所有正整数

时间:2013-10-24 21:53:15

标签: matlab function matrix

编写一个函数getpythogorean(Z),它返回所有满足以下属性的正整数,对于小于或等于Z的所有正整数:

x ^ 2 + y ^ 2 = z ^ 2

该函数不应包含任何循环。

以下是输入/输出示例

  
    

getpythogorean(20)

         

ans = [3 4 5; 6 8 10; 5 12 13; 9 12 15; 8 15 17; 12 16 20]

  

所以基本上,你得到一个Z的值并输出x,y和z,导致z< 20

截至目前,这就是我所拥有的:

  

function [out] = getpythogorean(Z)

     

[X,Y] = meshgrid(1:Z,1:Z);

     

W = sqrt((X。^ 2)+(Y。^ 2));

     

现在我需要以某种方式过滤W的值并保存它们的位置以引用回输出的X和Y矩阵。据说这可以用4行代码完成。

非常感谢任何有关如何解决这个问题的建议。

谢谢!

1 个答案:

答案 0 :(得分:2)

你可以添加:

[x y]=find( abs(W-round(W))<eps )

找到W的整数值及其对应的x和y索引。然后

[x y W(find( abs(W-round(W))<eps ))]

会给你所有三胞胎......