chris 发表于 2007-5-3 14:47

谁能帮我看一下这个问题怎么解决??

fs=1/0.008;
N=length(s);s    是一个已导入的ecg信号
for i=0:N/3-1
    t(i+1)=x(3*i+1);
    sig1(i+1)=x(3*i+2);
    sig2(i+1)=x(3*i+3);
在运行是报错说: Undefined function or method 'x' for input arguments of type 'double'.
要怎么解决啊??
本人菜鸟级,请说的通俗一点,先谢了

yangzj 发表于 2007-5-3 14:52

x有没有赋值呀

chris 发表于 2007-5-3 14:59

赋什么值??不能随便赋吧。。。

yangzj 发表于 2007-5-3 15:19

回复 #3 chris 的帖子

没给x赋值,怎么用x给t和sig1 sig2这些赋值

咕噜噜 发表于 2007-5-3 15:19

原帖由 chris 于 2007-5-3 14:47 发表
fs=1/0.008;
N=length(s);s    是一个已导入的ecg信号
for i=0:N/3-1
    t(i+1)=x(3*i+1);
    sig1(i+1)=x(3*i+2);
    sig2(i+1)=x(3*i+3);
在运行是报错说: Undefined function or method 'x' for i ...
我这样理解你的程序,x是一个矩阵,t,sig1,sig2是三个未知矩阵,他们三个分别为矩阵x的第3*i+1,3*i+2,3*i+3个值组成?
假如是这样的话,那肯定是你的x矩阵没有赋值。我似乎觉得你给的这一段不完整,不是你的整个程序,把整个程序给出来也许能在的更名百你的问题在那里。或许你赋值了,但是前后符号不一致。

chris 发表于 2007-5-3 15:30

原帖由 咕噜噜 于 2007-5-3 15:19 发表

我这样理解你的程序,x是一个矩阵,t,sig1,sig2是三个未知矩阵,他们三个分别为矩阵x的第3*i+1,3*i+2,3*i+3个值组成?
假如是这样的话,那肯定是你的x矩阵没有赋值。我似乎觉得你给的这一段不完整, ...
fs=1/0.008
N=length(s);
for i=0:N/3-1
    t(i+1)=x(3*i+1);
    sig1(i+1)=x(3*i+2);
    sig2(i+1)=x(3*i+3);
end
figure(1);
subplot(2,2,1);
plot(t,sig1,'LineWidth',2);
xlabel('时间 t/s');
ylabel('电压 V/mV');
sig=hilbert(sig1);
sig=sig-mean(sig);
=instfreq(sig',2:length(sig)-1);
subplot(2,2,2);
plot(tt/fs,(1-ifr)*fs/2, 'LineWidth',2);
xlabel('时间 t/s');
ylabel('瞬时频率 f/Hz');
上面是所有的程序。我也觉得是x没赋值,但我不知道应该怎么写才算正确的赋值

yangzj 发表于 2007-5-3 15:37

你的S都没有用,估计你的S是信号,前1/3是时间,后2/3是两个信号
把x改成s应该就对了

yangzj 发表于 2007-5-3 15:39

给楼主一个建议:先把做法理清了,再来编程.

咕噜噜 发表于 2007-5-3 15:40

给x赋值就是要给出矩阵x的具体形式,即矩阵x里面每一个元素的具体值(数值矩阵而非符号矩阵),你的程序里面来说的确是x没有赋值,按到里你这个x矩阵应该是前面计算得到或者已知的。而且你这里的循环次数N也是由矩阵x的大小决定的

[ 本帖最后由 咕噜噜 于 2007-5-3 15:46 编辑 ]

xjzuo 发表于 2007-5-3 17:03

建议LZ把 s 文件传上来看看.

咕噜噜 发表于 2007-5-3 17:10

原帖由 xjzuo 于 2007-5-3 17:03 发表
建议LZ把 s 文件传上来看看.
是啊,楼主把s矩阵具体形式也应该是你的程序里面的x具体形式给一下,把x换成s程序应该就没问题了
页: [1]
查看完整版本: 谁能帮我看一下这个问题怎么解决??