MATLAB达人乱入

来源:百度知道 编辑:UC知道 时间:2024/09/24 03:33:30
设A是一个128*128的矩阵,编写一函数,其中n为一个正整数(<=128*128),该函数只保留A矩阵中最小的n个元素,其他元素值设为128,输出到B矩阵,并测定n=3000时程序运行时间
跪求程序
邮箱495129576@163.com

把下面的内容保存为question.m放到work文件夹下
function B=question(A,n)
tic;
[a,b]=sort(A(:));
B=255*ones(size(A));
B(b(1:n))=A(b(1:n));
toc;

然后在matlab里输入
A=randint(128,128,[0,255]);%这是随便生成的一个矩阵A
B=question(A,3000);%这就是保留最小的3000个值的矩阵B

我不是高手,我只知道程序运行时间
在前面加tic,最后加toc,运行就显示出时间了。

2楼greatdju - 大魔法师 九级 给出了答案
只要把B=255*ones(size(A)); 修改成为
B=128*ones(size(A));
就完美了,请楼主给2楼分数

把下面的内容保存为question.m放到work文件夹下
function B=question(A,n)
tic;
[a,b]=sort(A(:));
B=128*ones(size(A));
B(b(1:n))=A(b(1:n));
toc;

然后在matlab里输入
A=randint(128,128,[0,255]);%这是随便生成的一个矩阵A
B=question(A,3000);%这就是保留最小的3000个值的矩阵B
回答者: greatdju - 大魔法师 九级