【问题标题】:Solve matlab "Matrix dimensions must agree" error解决matlab“矩阵尺寸必须一致”错误
【发布时间】:2017-10-08 08:30:00
【问题描述】:

我一直在尝试做这个问题,但无论如何我都会得到这个错误。

有什么想法吗?

问题是

“矩阵尺寸必须一致”

bb = [1,1.18,1]; %-- Filter Coefficients
nn = 1:150;
L2 = 0:9; % M - 1(10-1 = 9)

%1st at 0.3
w1 = (0.2*cos(0.44*pi*nn)) .* (exp(-1i * 0.3 * 3.14 * L2)) ;

%2nd at 0.44
w2 = 0.2*cos(0.44*pi*nn) .* exp(-1i*0.44*3.14*L2);

%3rd at 0.7
w3 = 0.2*cos(0.44*pi*nn) .* exp(-1i*0.7*3.14*L2);

wt = w1 + w2 + w3;

HTOTAL = freqz(bb, 1, wt); 

H1 = freqz(bb, 1, w1); %

H2 = freqz(bb, 1, w2); %

H3 = freqz(bb, 1, w3); %

%set the value of x to see the filter
x = 1;

subplot(2,1,1); plot(wx, abs(HH))
subplot(2,1,2); plot(wx, angle(HH))
xlabel('Normalized Radian Frequency')

【问题讨论】:

    标签: matlab matrix filter


    【解决方案1】:

    您正在尝试将 (0.2*cos(0.44*pi*nn))(exp(-1i*0.3*3.14*L2)) 逐元素相乘。这里的问题是第一个数组包含nn = 150 元素,而第二个数组包含L2 = 10 元素。

    查看原始问题,您似乎需要使用 10 的过滤器长度 (L2),但您的 nn 数组的范围是 1 到 150,而不是所需的 0 到 9。

    您应该使用(0.2*cos(0.44*pi*L2)) 而不是(0.2*cos(0.44*pi*nn)) 来修复您的“矩阵尺寸必须一致”错误。

    【讨论】:

    • 嘿,伙计,谢谢您的提示!这是有道理的,我原以为我的意思是在我给出一个 wizz 之前与问题保持相同的范围。
    • 虽然现在使用 freqz 得到错误,因为选项必须是字符向量或实数、数字、标量或向量值。我假设这是因为 .* 反对指数对不起是一种痛苦,但你也有任何提示:/
    • 看起来您将错误的变量传递给freqz()。第三个参数应该是单个值,但您尝试传入一个向量 (wt/w1/w2/w3)。这个问题还需要bb吗?如果没有,如果你只使用freqz(wt, 1);(也没有HTOTAL)可能更有意义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多