matlab中max函数

设A是一个 256 X 256 的矩阵,编写一函数,格式为 B=function_name(A, n),其中 n 为一个正整数(<=256*256),该函数只保留A矩阵中绝对值最大的 n 个元素,其他元素值设为零,输出到B矩阵。测定n=300时程序运行时间。
提示:参考函数 max 和 sort 等。
怎么做啊?
二楼的那个答案好像无法运行啊,你就当做A中的元素互不相同来写程序吧能否再修改下! 运行如下:
function B=E_max(A,n)
B=zeros(256,256);
R=reshape(A,1,256*256);
R=sort(R,'descend');
for i=1:n
[x,y]=find(A==R(i));
B(x,y)=R(i);
end
??? function B=E_max(A,n)
|
Error: Function definitions are not permitted at the prompt or in scripts.

Matlab中max函数在矩阵中求函数大小的结果如下:


(1)C = max(A),返回一个数组各不同维中的最大元素。如果A是一个向量,max(A)返回A中的最大元素。如果A是一个矩阵,max(A)将A的每一列作为一个向量,返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大值。

如果A是多维数组,max(A) treats the values along the first non-singleton dimension as vectors, returning the maximum value of each vector.



(2)[Y,U]=max(A):返回行向量Y和U,Y向量记录A的每列的最大值,U向量记录每列最大值的行号。

(3)max(A,[],dim):返回A中有dim指定的维数范围中的最大值。dim取1或2。dim取1时,[Y,I]=max(M,[],1), 在第1维方向上取最大值,也就是每列最大值,结果存在Y里,I里存的是每列最大值的行位置。该函数和max(A)完全相同;

dim取2时,[Y,I]=max(M,[],2), 在第2维方向上取最大值,也就是每行最大值,结果存在Y里,I里存的是每行最大值的列位置。
该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大值。求最小值的函数是min,其用法和max完全相同。


拓展资料

1、MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLMATLAB和Mathematica、Maple并称为三大数学软件。

2、它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。AB和Simulink两大部分。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-07-12
按照你的意思,A中的元素应该互不相同,不然找出来的元素个数会大于n值。

函数:
function B=E_max(A,n)
B=zeros(256,256);
R=reshape(A,1,256*256);
R=sort(R,'descend');
for i=1:n
[x,y]=find(A==R(i));
B(x,y)=R(i);
end

主程序:
>> A=rand(256,256);
>> tic;
>> B=E_max(A,300);
>> t=toc

t =

21.3786

调试好之找后我才发的啊,你要先保存函数,再在主程序中调用。本回答被提问者采纳
第2个回答  2009-12-29
function B=function_name(A, n)

nA=numel(A); %A元素个数
if (n>nA || n<=0)
error('输入的n有误');
end

B=A;
[sortA,ind]=sort(A(:)); %排序,这里要将A转成列向量才可以
B(ind((nA-n+1):end))=0; %最后的n个
第3个回答  2009-12-27
分太少!
相似回答