matlab數據過濾
❶ MATLAB數值濾波處理,去除實驗得到的數值中的毛刺。
MATLAB數值濾波處理方法有:
首先關於fspecial函數的定義,fspecial函數用於建立預定義的濾波運算元。
其語法格式為:
h = fspecial(type)
h = fspecial(type,para)
其中type指定運算元的類型,para指定相應的參數;
函數type的類型有:
1、'average'averaging filter為均值濾波,參數為hsize代表模板尺寸,默認值為[3,3]。
函數格式:H = fspecial('average',hsize)
2、 'disk'circular averaging filter為圓形區域均值濾波,參數為radius代表區域半徑,默認值為5。
函數格式:H = fspecial('disk',radius)
3、'gaussian'Gaussian lowpass filter為高斯低通濾波,有兩個參數,hsize表示模板尺寸,默認值為[3 3],sigma為濾波器的標准值,單位為像素,默認值為0.5。
函數格式:H = fspecial('gaussian',hsize,sigma)
4、'laplacian' filter approximating the 2-D Laplacian operatorlaplacian filter為拉普拉斯運算元,參數alpha用於控制運算元形狀,取值范圍為[0,1],默認值為0.2.
函數格式:H = fspecial('laplacian',alpha)
5、'log'Laplacian of Gaussian filter為拉普拉斯高斯運算元,有兩個參數,hsize表示模板尺寸,默認值為[3 3],sigma為濾波器的標准差,單位為像素,默認值為0.5。
函數格式:H = fspecial('log',hsize,sigma)
6、'motion'motion filter運動模糊運算元,有兩個參數,表示攝像物體逆時針方向以theta角度運動了len個像素,len的默認值為9,theta的默認值為0。
函數格式:H = fspecial('motion',len,theta)
7、'prewitt'Prewitt horizontal edge-emphasizing filter用於邊緣增強,大小為[3 3],無參數。
函數格式:H = fspecial('prewitt')
8、'sobel'Sobel horizontal edge-emphasizing filter用於邊緣提取,無參數
函數格式:H = fspecial('sobel')the filter H: H'.9、'unsharp'unsharp contrast enhancement filter為對比度增強濾波器。參數alpha用於控制濾波器的形狀,范圍為[0,1],默認值為0.2.函數格式:H = fspecial('unsharp',alpha)
❷ matlab中怎麼篩選和處理矩陣
1:很簡單
A=[...];
B=[....];
C=[A, B];(或[A;B])需保證拼接的行或列數相等
2:最笨的辦法:用循環,一個一個數地比較,對每個數作如下操作:
如果一個數為1,看它下一個是不是2;
如果是,就刪掉當前行,跳到下一行第一個元素……
如果不是,就啥也不做……
這樣結束就得到你要的矩陣了
順便說一下,刪掉第i行:A(i,:)=[ ];
❸ matlab如何篩選滿足條件的數
試試看:
clear all;clc;
N=100;
a=1:N;
a=(fix(sqrt(a))./sqrt(a)==1).*a;
a(a==0)=[];
a
❹ matlab 數據篩選問題
你好,代碼如下:
count = 0;
for i = 1:size(x)-2
if(0.9*x(i+1)<=x(i) & 0.9*x(i+1)<=x(i+2))
count = count +1;
position(1,count) = i+1;
end
end
target_x = x(position)
target_y = y(position)
上面找出來的是滿足你條件的中間的點的位置,如果要找第一個點就把position減1,同樣地,找後面的點把position加1.
如果有幫助,請採納,謝謝
❺ 急!!!在MATLAB中怎樣篩選海量數據!
真個好辦,使用find函數就可以了。
a =
1 3
2 5
3 9
4 14
5 8
6 7
7 6
8 5
9 4
10 3
11 2
12 1
13 0
14 -1
15 -2
>> [x,y]=find(a(:,:)==2)
x =
2
11
y =
1
2
>> c=[1,2,3,4];find(c==2)
ans =
2
上面的例子中,如果你的數據是個矩陣的話,返回的分別是對應行數和列數。
如果你的數據是一維向量的話,返回的就是順序號了。
❻ 求救MATLAB高手:MATLAB 數據篩選
indata=load('data.txt'); %原始數據文件
index=find(indata>0);
outdata=indata(index);
save outdata outdata.txt
❼ matlab 篩選數據 篩選一個矩陣
我假設你輸入的那個文件時用逗號隔開三列的,那麼只需要下邊幾句話就能完成你的工作了。
data=dlmread('EMAG2.txt');
ind=data(:,1)>=-85&data(:,1)<=-30&data(:,2)>=-60&data(:,1)<=15;
dlmwrite('EMAG2.dat',data(ind,:),'')
為了測試我自己寫了一個txt,右側的dat是運行程序後的結果。
❽ 怎麼使用matlab進行數據分割和篩選
>> [x y]=meshgrid(0:100,0:60);
>> z=1635711.892-351.963775*x-2259.1306*y+42.74653*x.*y;
>> vpa(z,10);
zz=vpa(z,10);
>> fix(zz/100000);
>> (fix(zz/100)*100- fix(zz/100000)*100000)/100;
>> vpa(zz-fix(zz/100)*100,5);
>> zz1=fix(zz/100000);
>> zz2=(fix(zz/100)*100- fix(zz/100000)*100000)/100;
>> zz3=vpa(zz-fix(zz/100)*100,5);
plot3(zz)
hold on
plot3(zz)
hold on
plot3(zz1)
hold on
plot3(zz2)
hold on
plot3(zz3)
zzz(61,100)
a=1
b=1
>> for i=1:1:61
for j=1:1:101
if zz2(i,j)>150&10<zz3(i,j)&zz3(i,j)>40
zzz(a,b)=z(i,j)
a=a+1;
b=b+1;
end
end
end
❾ 如何通過matlab篩選矩陣數據
比如你的數據如[0,0,0,1,2,3,4,3,2,1,0,0,0,0,0,1,2,3,4,5,6,7,8,5,4,2,1.......],這樣的話,先把數據存到矩陣中A=[0,0,0,1,2,3,4,3,2,1,0,0,0,0,0,1,2,3,4,5,6,7,8,5,4,2,1.......],那麼提取第一段可以用
A1=A(1:10);A2=A(11:27);依次取出即可