Info
This question is locked. 请重新打开它进行编辑或回答。
Explanation of the matlab code
    16 次查看(过去 30 天)
  
       显示 更早的评论
    
Hi I foun this 'extract' of a matlab code on the internet. Can someone explain to me line by line whats happening? Im REALLY in need of help.
*
% ------------- % This is code to make the edge detecting filter % ----%
function filter=gaussfilt(N)
% calculate alpha so the filter fills all N points
alpha=N;
first=-(1-N/2)*exp(-(1-N/2)^2/alpha);
count=0;
while first<.1*(-(1530/4000*N-N/2)*exp(-(1530/4000*N-N/2)^2/alpha))
      count=count+1;
      alpha=N*500*count;
      first=-(1-N/2)*exp(-(1-N/2)^2/alpha);
end
for n=1:N
      filter(n)=-(n-N/2)*exp(-(n-N/2)^2/alpha);   % d/dt of a gaussian
end
filter=filter/sum(abs(filter));     % normalization
return
8 个评论
  Md Ibrahim
 2020-10-18
				
      编辑:Walter Roberson
      
      
 2023-11-9
  
			vmax=8;
vmin=-vmax;
del=(vmax-vmin)/L;
part=vmin:del:vmax;    % level are between vmin and vmax with difference of del
code=vmin-(del/2):del:vmax+(del/2);        % Contain Quantized values 
[ind,q]=quantiz(s,part,code);                     % Quantization process
% ind contain index number and q contain quantized  values
l1=length(ind);
l2=length(q);
for i=1:l1
    if(ind(i)~=0)       % To make index as binary decimal so started from 0 to N
        ind(i)=ind(i)-1;
    end 
    i=i+1;
end   
for i=1:l2
    if(q(i)==vmin-(del/2))       % To make quantize value in between the levels
        q(i)=vmin+(del/2);
    end
end    
subplot(3,1,3);
stem(q);grid on;                                 % Display the Quantize values
title('Quantized Signal');
ylabel('Amplitude--->');
xlabel('Time--->');
  Murthy
 2023-1-12
				% Load the voice signal [voice, fs] = audioread('stomp.mp3');
% Add sinusoidal interference at 1500Hz t = (0:length(voice)-1)/fs; sin_interference = 0.1*sin(2*pi*1500*t); corrupted_voice = voice , sin_interference;
% Design FIR null filter n = 100; % Filter length f = [0 0.7 0.75 1]; % Normalized frequency bands a = [1 1 0 0]; % Amplitude at each band b = firpm(n, f, a);
% Filter the corrupted signal to recover the original voice signal recovered_voice = filter(b, 1, corrupted_voice);
% Play the original, corrupted, and recovered voice signals sound(voice, fs); pause(1); sound(corrupted_voice, fs); pause(10); sound(recovered_voice, fs); pause(50) % Plot the original, corrupted, and recovered voice signals figure; subplot(3,1,1); plot(voice); title('Original Voice Signal'); subplot(3,1,2); plot(corrupted_voice); title('Corrupted Voice Signal'); subplot(3,1,3); plot(recovered_voice); title('Recovered Voice Signal');
% Plot the frequency response of the null filter figure; freqz(b, 1); title('Frequency Response of Null Filter');
采纳的回答
  Muthu Annamalai
    
 2013-6-19
        Your code calculates a filter kernel. I haven't run the code, but, it seems to me a kind of Gaussian filter, with some normalizations.
It could be rewritten like,
    function filter=gaussfilt(N)
    % calculate alpha so the filter fills all N points
    alpha=N;
    first=-(1-N/2)*exp(-(1-N/2)^2/alpha);
    count=0;
    % find the standard deviation for the Gaussian
    while first<.1*(-(1530/4000*N-N/2)*exp(-(1530/4000*N-N/2)^2/alpha))
          count=count+1;
          alpha=N*500*count;
          first=-(1-N/2)*exp(-(1-N/2)^2/alpha);
    end
    % calculate the filter kernel
    n=1:N
    filter =-(n-N/2).*exp(-(n-N/2).^2/alpha); 
    %normalize kernel & return
HTH
2 个评论
  Usama
 2023-4-7
				
      编辑:Walter Roberson
      
      
 2023-11-9
  
			H1_y= (I./(2*pi.*((X-r*cos((n-1)*2*pi/N)).^2+(Y-r*sin((n-1)*2*pi/N)).^2))).*(X-r*cos((n-1)*2*pi/N)).*...
    (cos((n-1)*2*pi/N));
更多回答(5 个)
  varshini rebala
 2015-3-19
        Can any one explain me what is happing in this code ?
% Selected Mapping (SLM)is one of the techniques used for % peak-to-average power ratio (PAPR) reduction in OFDM systems. % In this .m file it is simulated for a QPSK modulated, 64-subband % OFDM symbols.
clc clear
load ofdm_100000 % this is a .mat file containing 100000 QPSK modulated, % 64-element OFDM symbols. It is available with the % partial_transmit_sequence.m file, previously submitted % by the auther, for free download at the 'file exchange' % web page.
NN=10000; % the test is achieved on 10000 OFDM symbols only. It is % possible to use all of the 100000 symbols, but it will % take more time. N=64; % number of subbands L=4; % oversampling factor C=16; % number of OFDM symbol candidates
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % phase factor matrix [B] generation p=[1 -1 j -j]; % phase factor possible values randn('state', 12345); B=randsrc(C,N,p); % generate N-point phase factors for each one of the % C OFDM candidates %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:NN % calculate papr of original ofdm time_domain_signal=abs(ifft([ofdm_symbol(i,1:32) zeros(1,(L-1)*N) ofdm_symbol(i,33:64)])); meano=mean(abs(time_domain_signal).^2); peako=max(abs(time_domain_signal).^2); papro(i)=10*log10(peako/meano);
    % B*ofdm symbol
    p=[];
    for k=1:C
        p=[p; B(k,:).*ofdm_symbol(i,:)];
    end
     % Transform Pi to Time Domain and find paprs
     for k=1:C
         pt(k,:)=abs(ifft([p(k,1:32) zeros(1,(L-1)*N) p(k,33:64)]));
         papr(k)=10*log10(max(abs(pt(k,:)).^2)/mean(abs(pt(k,:)).^2));
     end
    % find papr_min
    papr_min(i)=min(papr);
    end
figure [cy,cx]=ccdf(papro,0.1); semilogy(cx,cy) % CCDF of PAPR of the original OFDM hold on [cy,cx]=ccdf(papr_min,0.1); semilogy(cx,cy,'r') % CCDF of the modified OFDM (by SLM)
0 个评论
  Sombaran Gupta
 2015-4-13
        Can anyone explain me from the third line till the end of this code..?? a=imread('kmeans.jpg'); imshow(255-rgb2gray(a)); b=reshape(double(255-rgb2gray(a)),[],1); [idx,c]=kmeans(b,2,'emptyaction','singleton'); Fin_a=reshape(idx,[size(rgb2gray(a))]); [ind1, ind2]=find(Fin_a(:,:)==2); [ind3, ind4]=find(Fin_a(:,:)==1); figure(); imshow(255-rgb2gray(a)); hold on if(length(ind1)<length(ind3)) scatter(ind2,ind1,'g'); else scatter(ind4,ind3,'g');a end
0 个评论
  Tanzila Minhaj
 2019-9-29
        
      编辑:Walter Roberson
      
      
 2023-11-9
  
      Can anyone help me understanding the code?
function [sigma] = constitutive_Armstrong_Frederick (e, E, sigma_y, H_k, H_nl)
% The function reconstructs the trend of the stress-strain curve
% according to the constitutive link of Armstrong & Frederick
% e = deformation vector
% E = Young's modulus [Pa]
% sigma_y = yield stress [Pa]
% H_k = instant kinematic work hardening parameter [Pa]
% H_nl = hardening parameter by Armstrong & Frederick [Pa]
% Data initialization
sigma (1) = 0;
alpha (1) = 0;
state (1) = 0;
for n = 1: length (e) -1
    % Stress calculation by elastic prediction
    sigma_e = sigma (n) + E * (s (n + 1) -e (n));
    % Increased effort assessed in the elastic prediction phase
    dsigma_e = sigma_e-sigma (n);
    % Purified elastic prediction of back stress
    sigma_e_tilde = sigma_e-alpha (n);
    % Evaluation of the yield function to less than a tolerance
    fi (n) = abs (sigma (n) -alpha (n)) - sigma_y;
    tol = 0.001;
    if abs (fi (n)) <toll
        fi (n) = 0;
    end
    % Recognition of the elastic / plastic phase by the function of
    % yield and the direction of deformation
    if fi (n) == 0 && (e (n + 1) -e (n)) * (e (n) -e (n-1))> 0
        % Plastic phase
        state (n + 1) = 1;
        % Sign of tensions (+ = traction, - = compression)
        sign = sign (dsigma_e);
        % Increase in the plastic dlambda multiplier
        dlambda = (a * sigma_e_tilde-sigma_y) / (a * (E + H_k) -H_nl * alpha (n));
        % Increase in plastic deformation
        de_pl = a * dlambda;
        % Increase in back stress
        Dalfa = H_k * de_pl-H_nl * abs (de_pl) * alpha (n);
        % Back stress
        alpha (n + 1) = alpha (n) + Dalfa;
        % Current voltage
        sigma (n + 1) = sign * sigma_y alpha + (n + 1);
    else
        % Elastic phase
        state (n + 1) = 0;
        sigma (n + 1) = sigma_e;
        de_pl = 0;
        alpha (n + 1) = alpha (n);
    end
end
end
0 个评论
  Ayshath Afra
 2020-4-5
        Can anyone help me understanding the code?
How to obtain the read cbir function
0 个评论
  Arun das H A
 2023-11-7
        clear all;
clf('reset');
cam = webcam(); % Create a webcam object
right = imread('RIGHT1.jpg');
left = imread('LEFT1.jpg');
noface = imread('no_face1.jpg');
straight = imread('STRAIGHT1.jpg');
detector = vision.CascadeObjectDetector(); % Create a face detector using Viola-Jones
detector1 = vision.CascadeObjectDetector('EyePairSmall'); % Create an eyepair detector
while true
    vid = snapshot(cam); % Get a snapshot from the webcam
    vid = rgb2gray(vid); % Convert to grayscale
    img = flip(vid, 2); % Flip the image horizontally
    bbox = step(detector, img); % Creating bounding boxes using detector
    if ~isempty(bbox)%if face exists
        biggest_box = 1;
        for i = 1:size(bbox, 1)%find the biggest face
            if bbox(i, 3) > bbox(biggest_box, 3)
                biggest_box = i;
            end
        end
        faceImage = imcrop(img, bbox(biggest_box, :)); % Extract the face from the image
        bboxeyes = step(detector1, faceImage); % locations of he eye pair using detector
        subplot(2,2,1), subimage(img); hold on; % Display full image
        for i = 1:size(bbox,1)%draw all the regions that contain face
            rectangle('position', bbox(i, :), 'lineWidth', 2, 'edgeColor', 'y');
        end
        subplot(2,2,3), subimage(faceImage); % Display face image
        if ~isempty(bboxeyes)%check if eyepair is available
            biggest_box_eyes = 1;
            for i = 1:size(bboxeyes, 1)%find the biggest eye pair
                if bboxeyes(i, 3) > bboxeyes(biggest_box_eyes, 3)
                    biggest_box_eyes = i;
                end
            end
            bboxeyeshalf = [bboxeyes(biggest_box_eyes, 1), bboxeyes(biggest_box_eyes, 2), bboxeyes(biggest_box_eyes, 3)/3, bboxeyes(biggest_box_eyes, 4)];%resize the eyepair width in half
            eyesImage = imcrop(faceImage, bboxeyeshalf(1, :)); % Extract the half eyepair from the face image
            eyesImage = imadjust(eyesImage); % Adjust contrast
            r = bboxeyeshalf(1, 4) / 4;
            [centers, radii, metric] = imfindcircles(eyesImage, [floor(r - r/4) floor(r + r/2)], 'ObjectPolarity', 'dark', 'Sensitivity', 0.93); % Hough Transform
            [M, I] = sort(radii, 'descend');
            eyesPositions = centers;
            subplot(2,2,2), subimage(eyesImage); hold on;
            viscircles(centers, radii,'EdgeColor','b');
            if ~isempty(centers)
                pupil_x = centers(1);
                disL = abs(0 - pupil_x);%disatance from left edge to center point
                disR = abs(bboxeyes(1,3)/3 - pupil_x);%distance right edge to center point
                subplot(2,2,4);
                if disL > disR + 16
                    subimage(right);
                elseif disR > disL
                    subimage(left);
                else
                    subimage(straight);
                end
            end
        end
    else
        subplot(2,2,4);
        subimage(noface);
    end
end
1 个评论
  Walter Roberson
      
      
 2023-11-9
				I do not understand how this code will help anyone to understand how the posted gaussfilt function works??
This question is locked.
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Test and Measurement 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!