Matlab 未定义函数';减去';输入参数类型为';iddata&x27;
这是一个后续行动 我想给一个信号一个偏移量,然后在其中加上一些延迟,然后计算RMSE,但当取差时,我有以下问题: 我想问以下几件事: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;
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.';