2013-10-16 2 views
0

메신저 플롯 및 플롯 기능을 사용하여 2 개의 그림을 플롯하려하지만 플롯 (그림 2)에 대해 오류가 발생하고 이유를 이해하지 못합니다.Matlab 오류, 행렬 치수가 일치하지 않습니다

오류 사용/ 매트릭스 크기가 일치해야합니다.

bhpfilter (줄 9)의 오류 H = 3 * g/((fo/f).^2 + 3 * (fo/f) +3); F는 벡터 동안 (F) bhpfilter @ (F, FO, g)

function [H] = bhpfilter(f, fo, g) 
    %freq finds the filter frequency response in V/V 
    %fo is the cut off frequency, f is the input frequency and g is the filter 
    %gain 

    if fo <= 0 || g <=0 %error checking 
     error('Inputs invalid'); 
    else 
     H = 3*g/((fo/f).^2 + 3*(fo/f)+3); 

    end 

    fo=1200.; 
    g=2.; 

    H [email protected](f) bhpfilter(f,fo,g); 
    H_1 = @(f) bhpfilter (f,fo,g)-0.8; 

    figure (1); 
    fplot(H,[0 2000]); 
    title('Plot of H vs f using fplot'); 
    xlabel('Frequency (Hz)'); 
    ylabel('Filter frequency response (V/V)'); 

    fprintf('The value of f that gives a response of 0.8 is %f Hz\n',fzero (H_1, [0 2000])); %placed this line of code here so that it can be visible in command window , showing it works 

    figure (2); 
    plot([0:2000],H([0:2000])); % code will find individual values of H(1), H(2) etc.. but will not find H([0:200]) 
    title('Plot of H vs f using plot'); 
    xlabel('Frequency (Hz)'); 
    ylabel('Filter frequency response (V/V)'); 
+0

위의 코드는 2 개의 다른 .m 파일에있는 방법입니다. –

답변

0
라인 H = 3*g/((fo/f).^2 + 3*(fo/f)+3);g에서

및 FO에

오류는 스칼라이다. 나누기 MATLAB은 스칼라/벡터 일 때 요소 나누기로 나누기 연산자를 요소로 인식하지 않습니다 (반대로 수행함). 당신은 넣어야 :

H = 3*g ./ ((fo./f).^2 + 3*(fo./f)+3); 

희망이 도움이됩니다.

+0

참으로 시도하지 못했습니다 ... –

+0

나는 동일한 오류가 발생합니다. –

+0

"0.8의 응답을주는 f 값은 1092.820323 Hz입니다." 변경 사항을 적용하여 코드를 올바르게 실행했습니다. – user2816823