Maltab-机器学习-Engineering features

tech2025-10-31  5

Statistical Functions

Measures of Central Tendency

FunctionDescriptionmeanArithmetic meanmedianMedian (middle) valuemodeMost frequent valuetrimmeanTrimmed mean (mean, excluding outliers)geomeanGeometric meanharmeanHarmonic mean

Measures of Spread

FunctionDescriptionrangeRange of values (largest – smallest)stdStandard deviationvarVariancemadMean absolute deviationiqrInterquartile range (75th percentile minus 25th percentile)

Measures of Shape

FunctionDescriptionskewnessSkewness (third central moment)kurtosisKurtosis (fourth central moment)momentCentral moment of arbitrary order

Calculate Basic Statistics

Instructions are in the task pane to the left. Complete and submit each task one at a time.

This code loads and plots the data.

load sampleletters.mat plot(b1.Time,b1.X) hold on plot(b2.Time,b2.X) hold off plot(b1.Time,b1.Y) hold on plot(b2.Time,b2.Y) hold off

Task 1

aratiob = range(b1.Y)/range(b1.X)

Task 2

medxb = median(b1.X,"omitnan") medyb = median(b1.Y,"omitnan")

Task 3

devxb = mad(b1.X) devyb = mad(b1.Y)

Task 4

aratiov = range(v1.Y)/range(v1.X) medxd = median(d1.X,"omitnan") medyd = median(d1.Y,"omitnan") devxm = mad(m1.X) devym = mad(m1.Y)

Further Practice

plot(b1.X,b1.Y,b2.X,b2.Y) axis([-1 1 -1 1]) axis equal plot(d1.X,d1.Y,d2.X,d2.Y) axis([-1 1 -1 1]) axis equal

Find Peaks in Signals

Instructions are in the task pane to the left. Complete and submit each task one at a time.

This code loads and plots the data.

load sampleletters.mat plot(m1.Time,m1.X)

Task 1

idxmin = islocalmin(m1.X) idxmax = islocalmax(m1.X) Visualize the results plot(m1.Time,m1.X) hold on plot(m1.Time(idxmin),m1.X(idxmin),"o") plot(m1.Time(idxmax),m1.X(idxmax),"s") hold off

Task 2

[idx,prom] = islocalmin(m1.X); plot(m1.Time,prom)

Task 3

idxmin = islocalmin(m1.X,"MinProminence",0.1) idxmax = islocalmax(m1.X,"MinProminence",0.1)

Further Practice

nnz(idxmin) sum(idxmin)

Calculating Derivatives

Instructions are in the task pane to the left. Complete and submit each task one at a time.

This code loads and plots the data.

load sampleletters.mat plot(m2.Time,m2.X) grid

Task 1

dX = diff(m2.X); dT = diff(m2.Time);

Task 2

dXdT = dX./dT;

Task 3

plot(m2.Time(1:end-1),dXdT)

Task 4

maxdx = max(dXdT) dYdT = diff(m2.Y)./dT; maxdy = max(dYdT)

Task 5

dYdT = standardizeMissing(dYdT,Inf); maxdy = max(dYdT)

Further Practice

dYdT = standardizeMissing(dYdT,[-Inf 0 Inf]); maxdy = max(dYdT)

Calculating Correlations

Instructions are in the task pane to the left. Complete and submit each task one at a time.

This code loads and plots the data.

load sampleletters.mat plot(v2.X,v2.Y,"o-")

Task 1

C = corr(v2.X,v2.Y)

Task 2

C = corr(v2.X,v2.Y,"Rows","complete")

Task 3

M = [v2.X(1:11) v2.Y(1:11) v2.X(12:22) v2.Y(12:22)]

Task 4

Cmat = corr(M,"Rows","complete")

Create a Feature Extraction Function

Instructions are in the task pane to the left. Complete and submit each task one at a time.

This code loads the data and calculates some features for one letter.

load sampleletters.mat letter = b1; aratio = range(letter.Y)/range(letter.X) idxmin = islocalmin(letter.X,"MinProminence",0.1); numXmin = nnz(idxmin) idxmax = islocalmax(letter.Y,"MinProminence",0.1); numYmax = nnz(idxmax) dT = diff(letter.Time); dXdT = diff(letter.X)./dT; dYdT = diff(letter.Y)./dT; avgdX = mean(dXdT,"omitnan") avgdY = mean(dYdT,"omitnan") corrXY = corr(letter.X,letter.Y,"rows","complete") featurenames = ["AspectRatio","NumMinX","NumMinY","AvgU","AvgV","CorrXY"];

Task 1

feat = table(aratio,numXmin,numYmax,avgdX,avgdY,corrXY)

Task 2

feat = table(aratio,numXmin,numYmax,avgdX,avgdY,corrXY,'VariableNames',featurenames)

Task 3 (continued below)

featB2 = extract(b2)

Task 3

function feat=extract(letter) aratio = range(letter.Y)/range(letter.X) idxmin = islocalmin(letter.X,"MinProminence",0.1); numXmin = nnz(idxmin) idxmax = islocalmax(letter.Y,"MinProminence",0.1); numYmax = nnz(idxmax) dT = diff(letter.Time); dXdT = diff(letter.X)./dT; dYdT = diff(letter.Y)./dT; avgdX = mean(dXdT,"omitnan") avgdY = mean(dYdT,"omitnan") corrXY = corr(letter.X,letter.Y,"rows","complete") featurenames = ["AspectRatio","NumMinX","NumMinY","AvgU","AvgV","CorrXY"]; feat = table(aratio,numXmin,numYmax,avgdX,avgdY,corrXY,'VariableNames',featurenames) end

Add a Feature Extraction Function

Instructions are in the task pane to the left. Complete and submit each task one at a time.

This code creates a datastore and adds a preprocessing function as a transformation to it.

letterds = datastore("*.txt"); preprocds = transform(letterds,@scale)

Task 1

featds = transform(preprocds,@extract)

Task 2

data = readall(featds) scatter(data.AspectRatio,data.CorrXY)

Task 3

knownchar = extractBetween(letterds.Files,"_","_")

Task 4

knownchar = categorical(knownchar)

Task 5

data.Character = knownchar gscatter(data.AspectRatio,data.CorrXY,data.Character)

Local Functions

function data = scale(data) % Normalize time [0 1] data.Time = (data.Time - data.Time(1))/(data.Time(end) - data.Time(1)); % Fix aspect ratio data.X = 1.5*data.X; % Center X & Y at (0,0) data.X = data.X - mean(data.X,"omitnan"); data.Y = data.Y - mean(data.Y,"omitnan"); % Scale to have bounding box area = 1 scl = 1/sqrt(range(data.X)*range(data.Y)); data.X = scl*data.X; data.Y = scl*data.Y; end function feat = extract(letter) % Aspect ratio aratio = range(letter.Y)/range(letter.X); % Local max/mins idxmin = islocalmin(letter.X,"MinProminence",0.1); numXmin = nnz(idxmin); idxmax = islocalmax(letter.Y,"MinProminence",0.1); numYmax = nnz(idxmax); % Velocity dT = diff(letter.Time); dXdT = diff(letter.X)./dT; dYdT = diff(letter.Y)./dT; avgdX = mean(dXdT,"omitnan"); avgdY = mean(dYdT,"omitnan"); % Correlation corrXY = corr(letter.X,letter.Y,"rows","complete"); % Put it all together into a table featurenames = ["AspectRatio","NumMinX","NumMinY","AvgU","AvgV","CorrXY"]; feat = table(aratio,numXmin,numYmax,avgdX,avgdY,corrXY,'VariableNames',featurenames); end

 

最新回复(0)