pcolor - how to smooth

31 次查看(过去 30 天)
Yuji Zhang
Yuji Zhang 2013-8-30
Hi everyone~
I'm plotting some contour map (x, y, z)
If I use Origin, it does some nice smoothing.
In Maltab, using
pcolor(x, y, z); shading interp;
It shows all the noise.
See the picture please.<https://lh6.googleusercontent.com/-fqdFfNo1k5E/UiDzBmXPjtI/AAAAAAAAAz0/iSuJktzidb8/w1044-h352-no/plot.png>
The 3rd plot is a comparison: when data's not noisy, Matlab produces a flat background part (the blue part) too.
I wonder if there's anyway I can get do the same as in Origin using Matlab. Or do I have to smooth the data myself?
Any thoughts are appreciated. Thanks~

回答(3 个)

Kelly Kearney
Kelly Kearney 2013-8-30
Pretty sure it's just a colormap difference, with origin setting everything less than -90 to black. Try this:
pcolor(x,y,z);
shading interp;
set(gca, 'clim', [-90 -32]);
colormap([0 0 0; jet]);
colorbar;
You'll probably have to fiddle a bit more with the colormap and color limits to get the exact same thing, but that should be close.
  1 个评论
Yuji Zhang
Yuji Zhang 2013-8-30
Hi Kelly~
Thanks for your help. The method to change the low-background color is helpful~
The graph I provided was misleading. My question was actually: the low signal part (black part in 2nd graph) has noise. In the 1st graph the noise is all shown. I don't want it to show.
See the comparison: the 3rd graph is where there's no noise, the blue part is flat.
Please see the updated picture. Thank you~

请先登录,再进行评论。


Image Analyst
Image Analyst 2013-8-30
Can you somehow get an image out of that? Because images are a lot easier to smoother than a list of random coordinates.
  2 个评论
Yuji Zhang
Yuji Zhang 2013-8-30
Hi~ Thank you for your help! Sure I got picture. The graph I uploaded is a picture.
I'm not familiar with imagine processing. I can't imagine smoothing a picture is easier than smoothing the data. Could you give me a link or something that I can learn how to smooth a picture from? Or could you just download the picture I provided and show me an example of smoothing(if it's easy and quick)? Thanks a lot~
Image Analyst
Image Analyst 2013-8-30
编辑:Image Analyst 2013-8-30
One way, though not necessarily the best way is to just use convolution to blur each color channel one at a time:
% Extract the individual red, green, and blue color channels.
redChannel = rgbImage(:, :, 1);
greenChannel = rgbImage(:, :, 2);
blueChannel = rgbImage(:, :, 3);
windowSize = 7;
kernel = ones(windowSize) / windowSize ^ 2;
% Blur the individual color channels.
smoothedPictureR = conv2(double(redChannel), kernel, 'same');
smoothedPictureG = conv2(double(greenChannel), kernel, 'same');
smoothedPictureB = conv2(double(blueChannel), kernel, 'same');
% Recombine separate color channels into a single, true color RGB image.
smoothrgbImage = uint8(cat(3, smoothedPictureR , smoothedPictureG, smoothedPictureB));
imshow(smoothrgbImage);

请先登录,再进行评论。


Usenobong Akpan
Usenobong Akpan 2019-3-15
Hi,
Please I am a new user of matlab. i need help on the matlab code that would make me plot a single 3 axes graph. I am comparing power (W) and temp (degree celsius) over same time interval. I can if there were of the same unit i.e. W and W over same time interval; but here I am having difficulty.
pls can anyone help out?

类别

Help CenterFile Exchange 中查找有关 Colormaps 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by