【matlab学习】matlab自定义函数的编写

判断一个数是否为素数

function p=myprime(a)
for i=2:a-1
    if 0==rem(a,i)
        p=0;
        break;
    elseif i==a-1
        p=1;
    end
end

(测试代码)

clc;
n = input('请输入一个数:');
res = myprime(n);
if res == 1
    disp('是素数')
else
    disp('不是素数')
end  

求两个数的最大公约数和最小公倍数

function z=mycalulate(a,b)
c = 1;
while c~= 0
    c = mod(a,b);
    a = b;
    b = c;
end
z = a;
end

(测试代码)

x = input('输入第一个数:');
y = input('输入第二个数:');
m1 = mycalulate(x,y);
m2 = x*y/m1;
disp(['最大公约数:' num2str(m1)]);
disp(['最小公倍数:' num2str(m2)]);

求两个矩阵的乘积

function C=work(A,B)
[m1,n1]=size(A);
[m2,n2]=size(B);
if(n1~=m2)
    C=[];
    C;
end
C=zeros(m1,n2);
for i=1:m1
    for j=1:n2
        for k=1:n1
            C(i,j)=C(i,j)+A(i,k)*B(k,j);
        end
    end
end
C;
end

(测试代码)

clc;
clear;
a=[1 3 5;2 4 6]
b=[1 2;4 5;6 7]
c=work(a,b)
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab中,可以使用`imdilate`函数来进行图像膨胀运算。如果需要自定义膨胀运算的操作,可以编写自定义函数实现。 下面是一个简单的示例代码来实现自定义的膨胀运算函数: ```matlab function output = mydilate(img, se) % 获取结构元素的大小 [m,n] = size(se); m_half = floor(m/2); n_half = floor(n/2); % 获取输入图像的大小 [height, width] = size(img); % 初始化输出图像 output = zeros(height, width); % 对于每个像素点执行膨胀操作 for i = 1:height for j = 1:width % 计算结构元素在当前像素点的位置 i_start = max(i-m_half, 1); i_end = min(i+m_half, height); j_start = max(j-n_half, 1); j_end = min(j+n_half, width); % 判断结构元素是否与原图像重叠 if sum(sum(se(1+i-m+i_start:1+i-m+i_end, 1+j-n+j_start:1+j-n+j_end) & img(i_start:i_end, j_start:j_end))) > 0 output(i, j) = 1; end end end output = logical(output); end ``` 在这个函数中,我们首先获取了结构元素和输入图像的大小,然后对于每个像素点执行膨胀操作。具体来说,我们计算结构元素在当前像素点的位置,并判断结构元素是否与原图像重叠,如果有重叠部分,则将输出图像中对应的像素点设为1。最后将输出图像转换为逻辑类型即可。 使用这个自定义函数的示例代码如下: ```matlab % 读取图像 img = imread('lena.png'); % 定义结构元素 se = [0 1 0; 1 1 1; 0 1 0]; % 执行自定义膨胀运算 output = mydilate(img, se); % 显示结果图像 imshow(output); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值