设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两大部分。