拿到MATLAB程序,一个主程序和一个子程序,不知道怎样运行

是把子程序直接黏贴到主程序后面,然后放到MATLAB上运行吗?主程序是:%多尺度形态滤波f=imread('saturn.tif');figure,imshow(f)f=... 是把子程序直接黏贴到主程序后面,然后放到MATLAB上运行吗?
主程序是:%多尺度形态滤波
f = imread('saturn.tif');
figure,imshow(f)
f=imnoise(f,'salt & pepper'); %加噪声
figure,imshow(f)
B=zeros(21,21);
B(11,11)=1;
B(10,11)=1;
B(12,11)=1;
B(11,10)=1;
B(11,12)=1;
%function F=cms_removenoise(f,B)
b= strel('arbitrary',B); %最小结构元素
n=3;
sumE=0;
for i=1:n
if i==1
Foc=imopen(f,b); %开闭(oc)---闭开(co)滤波
Foc=double(imclose(Foc,b));
Fco=imclose(f,b);
Fco=double(imopen(Fco,b));
Eoc(i)= entropy(Foc); %求熵
Eco(i)= entropy(Fco);
sumE=sumE+Eoc(i)+Eco(i);
F=Eoc(i)*Foc+Eco(i)*Fco;
else
B=imdilate(B,b); %结构元素的膨胀
b1= strel('arbitrary',B);
Foc=imopen(f,b1); %开闭(oc)---闭开(co)滤波
Foc=double(imclose(Foc,b1));
Fco=imclose(f,b1);
Fco=double(imopen(Fco,b1));
Eoc(i)= entropy(Foc); %计算滤波后图像的熵
Eco(i)= entropy(Fco);
sumE=sumE+Eoc(i)+Eco(i);
F=F+Eoc(i)*Foc+Eco(i)*Fco; %各种尺度下形态滤波得到的图像的加权合成
end
end
F=uint8(F/sumE); %各种尺度下形态滤波得到的图像的加权合成
figure,imshow(F);
title('滤波后的图像');
子程序是:
function E= entropy(A) %计算熵
E=0;
n=1.0;
num=size(A);
j=num(1)*num(2);
p=zeros(256);
A=double(A);
for i=1:j %求每个灰度值出现的次数
n=A(i)+1;
p(n)= p(n)+1;
end
p=p/j; %求每个灰度值出现的概率
for m=1:256
if p(m)~=0
E=E+p(m)*log2(p(m));%求熵
end
end
E=-E;
请问如何运行?
我按你提示保存了子程序为entropy.m文件 ,主程序直接运行,可是还有错误提示

??? function E= entropy(A) %计算熵
|
Error: Function definitions are not permitted at the prompt or in scripts.
展开
 我来答
huxuec
2009-05-20 · TA获得超过2625个赞
知道小有建树答主
回答量:1095
采纳率:75%
帮助的人:588万
展开全部
子程序保存为entropy.m文件
主程序直接运行
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式