Matlab 未定义函数';减去';输入参数类型为';iddata&x27;

Matlab 未定义函数';减去';输入参数类型为';iddata&x27;,matlab,methods,time-series,signal-processing,sampling,Matlab,Methods,Time Series,Signal Processing,Sampling,这是一个后续行动 我想给一个信号一个偏移量,然后在其中加上一些延迟,然后计算RMSE,但当取差时,我有以下问题: 我想问以下几件事: 如何解决上述问题 请任何人用简单的语言解释一下,iddata做了什么——因为我研究了不同的门户网站,包括MATLAB,但仍然无法得到一个好的概念 如何将iddata类型的数据存储在代码最后一部分的减法单元格中 有问题的代码: drv(1)=荷载('123.mat'); t=drv(1.x); ref=drv(1.y); 角度=drv(1).z; Fs=1000;

这是一个后续行动

我想给一个信号一个偏移量,然后在其中加上一些延迟,然后计算RMSE,但当取差时,我有以下问题:

我想问以下几件事:

  • 如何解决上述问题
  • 请任何人用简单的语言解释一下,
    iddata
    做了什么——因为我研究了不同的门户网站,包括MATLAB,但仍然无法得到一个好的概念
  • 如何将
    iddata
    类型的数据存储在代码最后一部分的减法单元格中
  • 有问题的代码:
    drv(1)=荷载('123.mat');
    t=drv(1.x);
    ref=drv(1.y);
    角度=drv(1).z;
    Fs=1000;
    t1=t';
    ref1=ref';
    d_data=iddata(参考文献1,t1,1/Fs);
    %%添加偏移量:
    x=1;
    afterOffset1={};
    对于i=100:10:130
    T=getTrend(数据);
    % 
    T.InputOffset=i;
    T.输出偏移=i;
    afterOffset=retrend(d_数据,T);
    afterOffset1{x,1}=afterOffset;
    x=x+1;
    结束
    %%添加延迟:
    y=20;
    afterDelay1={};
    对于i=1:1:4
    %延迟样本=i;%必须是非负值
    %afterDelay=iddata([NaN(delaySamples,1);d_data.OutputData],。。。
    %[d_data.InputData;NaN(delaySamples,1)],1/Fs);
    afterOffset1{i}.Tstart=y;
    afterDelay1{i,1}=afterOffset1{i};
    y=y+10;
    结束
    %%绘图:
    n=尺寸(后延迟1,1);
    图();
    对于i=1:1:n
    子地块(2,2,i);
    绘图(d_数据);
    保留全部
    图(1{i}后);
    结束
    sig_diff=角度(1)-后延迟1;
    平方误差(i,:)=(sig_diff(i))^2;
    mse(i,:)=平均值(平方误差(i));
    rmse(i,:)=sqrt(mse(i));
    
    sig_diff=d_数据_1-后延迟;% 您很可能需要
    iddata
    对象的
    OutputData
    属性,该对象是问题的输出或
    y
    信号:

    sig_diff = angle(1)-afterDelay1.OutputData;
    
    还要注意,这将为您提供一个向量,但稍后的代码将假定它是一个行向量。在执行上述计算后,您可能希望在继续之前转置此数据:

    sig_diff = angle(1)-afterDelay1.OutputData;
    sig_diff = sig_diff.';
    
    通常,
    iddata
    是一个函数,用于创建表示输入和输出时域或频域数据的对象。请注意,当您创建
    iddata
    对象时,输入矩阵可能有多个源,因此每个指示一个源。对于每个指示输出的输出也可以这样说。因此,在使用此函数之前转置数据非常重要,以确保每个信号位于单独的列中,或者仅使用一列表示一个输入/输出


    对象内部有多种属性,包括采样时间或采样频率、函数所承担的有效域和范围,以及最终访问输入和输出数据
    OutputData
    是这些字段之一。我建议您阅读有关您可以使用
    iddata
    访问的所有属性的文档<代码>输出数据
    在此处有明确定义:

    rayryeng我已安装系统识别工具箱。我在这行有问题,sig_diff=角度(1)-后延迟1;实际上我想从矩阵中减去iddata,这可能是个问题。非常感谢开发人员编辑我的问题。我误读了这个问题。道歉。我已经创造了一个答案。非常感谢这对我来说非常有用,也感谢你对iddata的解释。对于像我这样的初学者来说,这是一个很好的解释,使用系统识别工具箱。当我使用此命令时,它会将三维数据转换为二维数据,我不知道它是如何完成的,因为outdata也应该包含三维数据。你能帮我解决这个困惑吗。提前谢谢。@Peter我不太确定我是否听懂了。我不知道你输入的是3D数据。你能给我更多关于你的输入和输出数据的信息吗?更好的是,如果你能上传一份你的MAT文件的副本,这样我就可以自己看了。我可以更容易地修改我的帖子,因为我可以运行上面的代码。矩阵上的尾随单体维度在MATLAB中是不存在的。你是说这是一个1 x 1 x 166230矩阵吗?rayryeng真的很抱歉我弄错了,我弄错了。非常感谢你这么大的帮助和支持。
    sig_diff = angle(1)-afterDelay1.OutputData;
    sig_diff = sig_diff.';