用matlab的解一道题
发布网友
发布时间:2023-07-18 15:25
我来回答
共2个回答
热心网友
时间:2024-12-04 10:35
以下两个函数分别用sort和max解决。
(1)用参考函数sort
function Y=function_name(X,n)
[a,b]=sort(abs(X(:)));
%将矩阵X中的所有元素按从小到大排列,a记录数据,b记录数据位置。
X(b(1:end-n))=0; Y=X;
%将矩阵X中的前end-n个(end代表矩阵X总的元素个数)元素设为0,其他位置的元素值不变。
(2)用参考函数max
function Y=function_name(X,n)
Y=zeros(size(X));%预先给矩阵Y赋一个值(与X同大小的零矩阵)。
k=0;
while k<n
[a,b]=max(abs(X(:)));
Y(b)=X(b);X(b)=0;
k=k+1;
end
% 下面是测试:
%X=randn(256); tic; Y=function_name(X,500); toc
%X=randn(2); tic; Y=function_name(X,3); toc
很显然,方法(1)耗时较少,这充分体现了Matlab数组运算的优点。
热心网友
时间:2024-12-04 10:36
下面是函数:
function Y=function_name(X,n)
[a,b]=sort(abs(X(:)));
X(b(1:end-n))=0;
Y=X;
下面是测试:
X=randn(256);
tic;
Y=function_name(X,500);
toc