微茸鱼鱼 2024-09-27 22:58 采纳率: 33.3%
浏览 6
已结题

matlab调用xcorr出现参数太多

matlab使用xcorr函数求互相关函数时出现输入参数过多的报错,请问为什么?


```c
properties (Access = private)
        Property % Description
        Fs;
        dt; 
        DF;
        T; 
        N;
        t;
        wave1;%波形1
        wave2;%波形2
        type1;%信号1
        type2;
        F1;
        A1;
        F2;
        A2;


end 

    methods (Access = private)
        function results = drawsingal1(app,type1,A1,F1)
        
            app.t = linspace(0,1,app.N);
            if type1==0
                app.wave1 = app.A1*sin(2*pi*app.F1*app.t/100);
            end
            if  type1==1
                app.wave1 = app.A1*square(2*pi*app.F1*app.t/100);
            end
            if type1==2
                app.wave1=app.A1*sawtooth(2*pi*app.F1*app.t/100);
            end
            if type1==3
                app.wave1=app.A1*0.2*randn(1,app.N);
            end
            
            xlim(app.UIAxes,[0,1]);
            ylim(app.UIAxes,[-1,1]);
            plot(app.UIAxes,app.t,app.wave1);
          
        end
        
        function results = drawSingal2(app,type2,A2,F2)
           
            app.t = linspace(0,1,app.N);
            if type2==0
                app.wave2 = app.A2*sin(2*pi*app.F2*app.t/100);
            end
            if  type2==1
                app.wave2 = app.A2*square(2*pi*app.F2*app.t/100);
            end
            if type2==2
                app.wave2=app.A2*sawtooth(2*pi*app.F2*app.t/100);
            end
            if type2==3
                app.wave2=app.A2*0.2*randn(1,app.N);
            end
           
            xlim(app.UIAxes2,[0,1]);
            ylim(app.UIAxes2,[-1,1]);
            plot(app.UIAxes2,app.t,app.wave2);
          
        end
        
        
    end
    

    % Callbacks that handle component events
    methods (Access = private)

        % Code that executes after component creation
        function startupFcn(app)
            app.Fs = 44100;
            app.N = 44100;
            app.A1 = 1;
            app.A2=1;
            app.F1 = 1000;
            app.F2 = 1000;
            app.type1=0;
            app.type2=0;
        end

        % Value changed function: EditField
        function EditFieldValueChanged(app, event)
            value = app.EditField.Value;
            app.Slider.Value = value;%把文本框的值赋给滑块
            app.F1 = app.Slider.Value;
        end

        % Value changing function: Slider
        function SliderValueChanging(app, event)
            changingValue = event.Value;
            app.EditField.Value = changingValue;%把滑块的值赋给文本框
        end

        % Value changed function: EditField_3
        function EditField_3ValueChanged(app, event)
            value = app.EditField_3.Value;
            app.Slider_3.Value = value;%把文本框的值赋给滑块
            app.A1 = app.Slider_3.Value;
        end

        % Value changing function: Slider_3
        function Slider_3ValueChanging(app, event)
            changingValue = event.Value;
            app.EditField_3.Value = changingValue;%把滑块的值赋给文本框
            app.A1 = changingValue;
        end

        % Selection changed function: ButtonGroup
        function ButtonGroupSelectionChanged(app, event)
            selectedButton = app.ButtonGroup.SelectedObject;
            if selectedButton==app.Button
              app.type1=0;
            end
             if selectedButton==app.Button_2
              app.type1=1;
             end
              if selectedButton==app.Button_3
              app.type1=2;
              end
               if selectedButton==app.Button_4
              app.type1=3;
               end
  drawsingal1(app,app.type1,app.A1,app.F1);          
        end

        % Value changed function: EditField_2
        function EditField_2ValueChanged(app, event)
            value = app.EditField_2.Value;
             app.Slider.Value = value;%把文本框的值赋给滑块
            app.F2 = app.Slider_2.Value;
        end

        % Value changing function: Slider_2
        function Slider_2ValueChanging(app, event)
            changingValue = event.Value;
            app.EditField_2.Value = changingValue;%把滑块的值赋给文本框
        end

        % Value changed function: EditField_4
        function EditField_4ValueChanged(app, event)
            value = app.EditField_4.Value;
             app.Slider_4.Value = value;%把文本框的值赋给滑块
            app.A2 = app.Slider_4.Value;
        end

        % Value changing function: Slider_4
        function Slider_4ValueChanging(app, event)
            changingValue = event.Value;
              app.EditField_4.Value = changingValue;%把滑块的值赋给文本框
              app.A2 = changingValue;
        end

        % Selection changed function: ButtonGroup_2
        function ButtonGroup_2SelectionChanged(app, event)

            selectedButton = app.ButtonGroup_2.SelectedObject;
            if selectedButton==app.Button_5
                app.type2=0;
            end
            if selectedButton==app.Button_6
                app.type2=1;
            end
            if selectedButton==app.Button_7
                app.type2=2;
            end
            if selectedButton==app.Button_8
                app.type2=3;
            end
            drawSingal2(app,app.type2,app.A2,app.F2);
        
        end

        % Button pushed function: Button_9
        function Button_9Pushed(app, event)
      drawsingal1(app,app.type1,app.A1,app.F1); 
        drawSingal2(app,app.type2,app.A2,app.F2);
            T = 1;
          r1=xcorr(app.wave1,app.wave2);
            N1=length(r1);
            x3=linspace(-T,T,N1);
            plot(app.UIAxes3,x3,r1);
            xlim([-T/2,T/2]);
            ylim([-1,1]);
        end

        % Button pushed function: FFTButton
        function FFTButtonPushed(app, event)
            T = 1;   
            r2 = ifft(fft(app.wave1).*conj(fft(app.wave2)));%用FFT求相关函数
            N2 = length(r2);
            NN=length(app.wave1);
            r3 = r2/NN;
            x4= linspace(-T/2,T/2,N2);
            xlim(app.UIAxes4,[-T/2,T/2]);
            ylim(app.UIAxes4,[-1,1]);
            plot(app.UIAxes4,x4,r3);
        end
    end


程序运行后出现的报错是

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/e35153330a3a4be989ec52b5a7518559.png "#left")
  • 写回答

1条回答 默认 最新

  • 一轮明月照丘壑 2024-09-27 22:59
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    看起来你在使用 MATLAB 的 xcorr 函数时遇到了参数过多的问题。这可能是由于你尝试传递了过多的输入参数给 xcorr 函数,或者某些参数格式不正确导致的。xcorr 函数的基本语法是:

    R = xcorr(x)
    R = xcorr(x,maxlag)
    R = xcorr(x,maxlag,'normalized')
    

    其中 x 是输入信号,maxlag 是最大延迟值(默认为 length(x)-1),'normalized' 是一个可选的标志用于归一化输出。所以你应该根据你的实际需求来调用这个函数。另外,根据你提供的代码,我看到你在调用 xcorr 时尝试传递两个波形向量作为输入参数,这可能是不正确的。因为 xcorr 函数需要的是一个输入信号,通常用来计算信号的自相关函数。如果你想要计算两个信号的互相关函数,你应该分别对这两个信号调用 xcorr 函数。同时你的代码中的 T = 1; 在调用 xcorr 之前定义可能并不合适,因为 T 通常用来表示信号的时间长度或采样周期,而在计算互相关时并不需要这个参数。此外,你的代码中似乎存在拼写错误和冗余代码的问题,需要进一步检查和修正。以下是修改后的代码示例:

    function Button_9Pushed(app, event)
        drawsingal1(app, app.type1, app.A1, app.F1); 
        drawSingal2(app, app.type2, app.A2, app.F2);
        N = length(app.wave1); // 计算信号的点数
        r1 = xcorr(app.wave1, app.wave2); // 计算两个信号的互相关函数
        plot(app.UIAxes3, r1); // 绘制互相关函数图
    end
    

    注意,你需要确保 app.wave1app.wave2 是有效的信号向量,并且它们的长度相同或者足够用于计算互相关函数。此外,你的代码可能需要进行其他部分的检查和调整以确保逻辑的正确性。希望这些信息对你有所帮助!如果还有其他问题,请继续提问。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月6日
  • 已采纳回答 9月28日
  • 创建了问题 9月27日

悬赏问题

  • ¥15 IEd中开关量采样信号通道设计
  • ¥45 字符串操作——数组越界问题
  • ¥15 Loss下降到0.08时不在下降调整学习率也没用
  • ¥15 QT+FFmpeg使用GPU加速解码
  • ¥15 为什么投影机用酷喵播放电影放一段时间就播放不下去了?提示发生未知故障,有什么解决办法吗?
  • ¥15 来个会搭建付费网站的有偿
  • ¥100 有能够实现人机模式的c/c++代码,有图片背景等,能够直接进行游戏
  • ¥20 校园网认证openwrt插件
  • ¥15 以AT89C51单片机芯片为核心来制作一个简易计算器,外部由4*4矩阵键盘和一个LCD1602字符型液晶显示屏构成,内部由一块AT89C51单片机构成,通过软件编程可实现简单加减乘除。
  • ¥15 求GCMS辅导数据分析