Octave impz 函数的问题,在我绘制结果的那一刻
Problems with Octave impz function, in the moment I plot results
我是 Matlab 和 Octave 的新手 "World"。为了制作一个简单的脚本,我已经苦恼了几个小时 运行。问题是,我的老师是在 Matlab 上写的,我找不到让它在 Octave 上运行的方法。该脚本找到系统的脉冲答案并绘制曲线。这是:
b = [1]; a = [1, -1, 0.9]; n = [0:100];
h = impz(b,a,n);
stem(n,h);
subplot(1,1,1);
title('Impulse Response'); xlabel('n'); ylabel('h(n)');
错误是:
error: stem: inconsistent sizes for X and Y error: called from
stem>check_stem_arg at line 276 column 11
stem at line 37 column 40
stem at line 127 column 8
questao6_lab2 at line 4 column 1
我理解是因为轴的不同。虽然,我不明白为什么 octave 只给出 h 的单个值。函数 Impz 应该沿着你的 n 值描述一条曲线,但我没有。
谢谢
问题来自 impz
在这种情况下返回标量
octave-gui:26> h = impz (1, [1, -1, 0.9], 0:100)
h = 1
而您期望的是包含 100 个元素的向量(这是 Matlab 所做的)。在 Matlab 中,第三个参数 (N
) 可以是标量,表示脉冲响应的样本数,也可以是指定计算脉冲响应的值的向量。在 Octave 中,您只能指定多个样本。所以改为这样做:
h = impz (1, [1, -1, 0.9], 101);
此外,似乎 Octave returns 是行向量而不是列向量,所以这样做:
h = impz (1, [1, -1, 0.9], 101)(:);
我使用 (:)
而不是 .'
(转置)的原因是它可以在 this will be fixed 的下一版本信号包中继续工作。或者,运行 which impz
找到 Octave 的 impz
函数的源代码在哪里,现在就自己修复它。
我是 Matlab 和 Octave 的新手 "World"。为了制作一个简单的脚本,我已经苦恼了几个小时 运行。问题是,我的老师是在 Matlab 上写的,我找不到让它在 Octave 上运行的方法。该脚本找到系统的脉冲答案并绘制曲线。这是:
b = [1]; a = [1, -1, 0.9]; n = [0:100];
h = impz(b,a,n);
stem(n,h);
subplot(1,1,1);
title('Impulse Response'); xlabel('n'); ylabel('h(n)');
错误是:
error: stem: inconsistent sizes for X and Y error: called from stem>check_stem_arg at line 276 column 11 stem at line 37 column 40 stem at line 127 column 8 questao6_lab2 at line 4 column 1
我理解是因为轴的不同。虽然,我不明白为什么 octave 只给出 h 的单个值。函数 Impz 应该沿着你的 n 值描述一条曲线,但我没有。
谢谢
问题来自 impz
在这种情况下返回标量
octave-gui:26> h = impz (1, [1, -1, 0.9], 0:100)
h = 1
而您期望的是包含 100 个元素的向量(这是 Matlab 所做的)。在 Matlab 中,第三个参数 (N
) 可以是标量,表示脉冲响应的样本数,也可以是指定计算脉冲响应的值的向量。在 Octave 中,您只能指定多个样本。所以改为这样做:
h = impz (1, [1, -1, 0.9], 101);
此外,似乎 Octave returns 是行向量而不是列向量,所以这样做:
h = impz (1, [1, -1, 0.9], 101)(:);
我使用 (:)
而不是 .'
(转置)的原因是它可以在 this will be fixed 的下一版本信号包中继续工作。或者,运行 which impz
找到 Octave 的 impz
函数的源代码在哪里,现在就自己修复它。