Matlab主要函數使用方法!

ndims(A)用ndims命令常看矩陣的維數

1. matlab中mod的用法

簡單的說mod(a,b)就是求的是a除以b的餘數。比方說mod(100,3)=1,mod(17,6)=5
Examples

mod(13,5)
ans =
3

mod([1:5],3)
ans =
1 2 0 1 2

mod(magic(3),3)
ans =
2 1 0
0 2 1
1 0 2

2. 關於Matlab中size()的問題

size按照下面的形式使用:
[m,n]=size(a,x)。一般的,函數的輸入參量x不是用,這是當只有一個輸出變量時,size返回一個行向量,第一個數爲行數,第二個數爲列數;如果有兩個輸出變量,第一個返回量爲行數,第二個返回數爲列數。當使用x時,x=1返回行數,x=2返回列數,這時只有一個返回值。

我要問的是:
I=im2double(imread(file)) ;//把圖像數組轉換成double精度類型;

if(size(I,3) > 1)
  I = rgb2gray( I ) ;
end
中 size(I,3) 代表什麼意思? 按照上面的說法 X=1,2都可以理解。
I 代表的是圖像數組阿,不是二維的麼?  那麼   size(I,3) 中的3  代表什麼?
 
一個函數可以是多維的..比如說是 一個 10*10*10*10的距陣
那就是說這個距陣是4維的..
那個'()'裏的3就是指的第三維

3.r = corr2(A,B)

計算兩個矩陣的二維相關係數.

4.matlab中imshow顯示問題

各位好,將一幅灰度圖像經過小波變換後,數據變成double型,對變換後的圖像進行顯示時,設變換後的圖像爲y,爲何用imshow(uint8(y))和imshow(y,[])時的圖像顯示結果不同呢?請問該如何正確顯示變換後的圖像呢?着急解決,請各位xdjm幫幫忙吧!

回答:
imshow(uint8(y))是按照256級灰度顯示y得絕對數據。0表示0,255表示255,大於255得都是255。
imshow(y,[]),將y得最小值看作0,最大值看作255。
所以兩者不同。
小波變換得圖像應該用第二種顯示,把數據scale一下。

5.matlab中用imshow顯示圖像由於數組類型產生的錯誤

今天在用MATLAB寫程序的時候遇到個問題,以前一直沒有注意到,剛纔檢查的時候才發現。
我們先來看段不復雜的程序

%定義常量
size=256; block=8; I_w=zeros(size);
%讀入原始圖像和水印圖像並顯示
I=imread('lena.bmp'); W=imread('watermark.bmp');
subplot(1,3,1),imshow(I); title('原始圖像');
subplot(1,3,2),imshow(W); title('水印圖像');
%嵌入水印
for p= 1:size/block
for q= 1:size/block
x= (p-1)*block+1; y=(q-1)*block+1;
block_dct= I(x:x+block-1, y:y+block-1);
block_dct= dct2(block_dct);
if 0==W(p,q)
a= -1;
else
a= 1;
end
block_dct = block_dct *(1+a*0.01);
block_dct = idct2(block_dct);
I_w(x:x+block-1, y:y+block-1)=block_dct;
end
end

%顯示嵌入水印後的圖像
subplot(1,3,3),imshow(I_w); title('嵌入水印後的圖像');

這是一段很簡單的DCT嵌入水印的程序,我們不需要理解它。
但是你如果直接運行它的時候,會發現最後得到的嵌入水印後的圖像顯示爲一副白屏。

這是爲什麼呢?我們來查看一下I_w數組,會發現它是一個256×256 double數組。

在matlab裏面,我們顯示圖像可以用imshow函數。它是通過將灰度值標度爲灰度級調色板
的索引來顯示圖像的。如果I_w是uint8數組的話,直接顯示是沒問題的。
但是對於double數組,像素值是在[0.0,1.0]範圍內的,0.0表示黑色,1.0表示白色。
在顯示的時候必須保證double的值在[0.0,1.0]才能正確顯示。

所以我們必須用imshow(I_w,[0.0,1.0])來顯示它,當然也可以用空矩陣[]來指定數據範圍,
imshow會自動將數據進行標記。也就是imshow(I_w,[])

或者我們可以強制把double數組轉換成uint8數組來顯示也可以
imshow(uint8(I_w))

==========================================================================================
http://www.programfan.com/club/bbs.asp?bbsid=57   編程愛好者論壇

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章