BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / matlab / #4797同步于 2009/3/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖

一个简单但又不知如何解决的matlab程序错误,希望大家能帮忙解

wacke
2009/3/11镜像同步3 回复
先准备一张位图bupt.bmp,见附件 想请问一下到底是哪里出错了,本人愚笨,实在想不出来该如何解决,希望各位大牛能指点一下 以下为程序代码: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %文件:test.m %功能:此文件为主程序,但是存在一个错误,如果把(**)式改为k=7(或某个常数)则程序正确运行 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% img=imread('bupt.bmp'); k=img(1,1); %(**) a=setNumZero(k,7); disp(a) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %文件:setNumZero.m %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function y=setNumZero(x,m) %%%%%%%%%%%%%%%%%%%%%% %功能:该函数将数x的第m位设置为0 %%%%%%%%%%%%%%%%%%%%%% bitnumber=numdec2bin(x,8); num=ones(1,8); num(1,m)=0; yd=bitand(bitnumber,num); y=numbin2dec(yd); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %文件:numdec2bin.m %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function y=numdec2bin(x,n); %从函数将十进制数x转化为n位二进制 y=zeros(1,n); a=x; i=n; while a>0 y(i)=mod(a,2); a=floor(a/2); i=i-1; end 附件(208.3KB) bupt.rar
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
zixu1986机器人#1 · 2009/3/12
什么错误 k= 7, k是double型 k = img(1,1), k是uint8型 有可能是这个原因 还有 二进制与的为什么不直接用bitand函数 它可以直接把两个uint8的二进制相与 要达到指定第几位相与 可以弄个数组 里面存着操作数 比如第七位置零 就是和11111101(也即253)相与 在一个数组的第七个元素里放入253即可 比如a(7) = uint8(253) 然后要把第n位置零的操作就是y = bitand(input, a(n))
zixu1986机器人#2 · 2009/3/12
刚才说得比较麻烦 有个更好用的函数 bitset 整个程序可以写成两三行 img = imread('bupt.bmp'); new_img = bitset(img, m, 0); imshow(new_img,[]) 注意要用uint8型 不过这个灰度图正好读进来是uint8型的
zixu1986机器人#3 · 2009/3/12
得到的结果如下