一个matlab的问题 高人看看

来源:百度知道 编辑:UC知道 时间:2024/09/21 18:38:09
[X map] = imread('C:\Documents and Settings\TT\桌面\pl.JPG')

%画出原始图像
subplot (221) ;
image(X) ;
colormap(map) ;
title ('原始图像') ;axis square

init = 2055615866 ;randn ('seed',init);
x = X + 10 * randn(size(X)) ;%说这个这个地方出错了

subplot (222) ;image (x) ;colormap (map) ;
title ('含噪声图像') ;axis square

%pl.JPG是一个灰度图.
上面三位的方法貌似都没用

我觉得空格问题应该不大,貌似不是空格的问题。
一楼说得有道理,matlab里面类型不一致的运算比较受限制,如一楼所说:
x = X + 10 * randn(size(X)) ;%说这个这个地方出错了这句话出错是因为 randn函数的数据类型是 double,X的数据类型是uint8 这两者不是一个类型所以没法相加 改成下面的语句就没问题了:
x = X+uint8(10*randn(size(X)));

我试了一下,可以通过。

另:建议将图片数据换成double类型, 如 rgb2gray()\ mat2gray()等,然后又个 imshow() 方法 用于绘图

x = X + 10 * randn(size(X)) ;%说这个这个地方出错了这句话出错是因为 randn函数的数据类型是 double,X的数据类型是uint8 这两者不是一个类型所以没法相加 改成下面的语句就没问题了:
x = X+uint8(10*randn(size(X)));

注意数组类型和维数

空格问题,全角空格改成半角空格,就行了^_^