【问题标题】:Incorrect dimensions for raising a matrix to a power [duplicate]将矩阵提高到幂的尺寸不正确[重复]
【发布时间】:2020-03-11 17:13:24
【问题描述】:

这是我的代码:

x = 60: 95;
r11 = 0.93;
E1=13.5;
F1=0.00529;
G1=0;
H1=1;
k11=60;
k12=0;
uid = 10^-7*1.31275 * exp(0.145961 * x );
P = exp(-F1 * ((x-k11)^2) - G1*(x-k12));
fi= E1 * P + H1;
y1 = r1 * fi * uid;
plot(x,y1);

我的错误是:

使用 ^ 时出错(第 51 行)
将矩阵提升到幂的维度不正确。检查矩阵是否为正方形且幂为标量。要执行元素矩阵幂,请使用“.^”。

ui12 中的错误(第 16 行)
P = exp(-F1 * ((x-k11)^2) - G1*(x-k12));

【问题讨论】:

  • 请在发布问题之前进行基本搜索。将您的问题标题复制粘贴到 Google 中会生成链接的问答作为第一个答案。我什至可以肯定,您在输入问题时已经看到了链接。

标签: matlab


【解决方案1】:

错误是指 sn-p (x-k11)^2,您从数组 (x, 1x36) 中减去一个标量 (k11) 并尝试对结果求平方。问题是函数 ^ 是函数 mpower() 的快捷方式,它是 matrix-power 函数,因此需要一个标量或矩阵计算,因为它本质上是

x^2 == x*x
x^3 == x*x*x

但是,它不知道如何处理数组,因为x*x 不起作用(尝试运行rand(1,36)*rand(1,36),这基本上会引发相同的错误)。 它还提出了一个解决方案:.^,即 element-wise 幂函数(实际上,算术运算中的. 通常表示进行以下操作element-wise)。 .^ 是“正常”power 函数的快捷方式,正如您一开始所期望的那样。它对数组x 的每个元素执行^2

x.^2 == power(x,2)

补充说明: 要模仿 element-wise 运算符 . 的行为,您可能需要查看 arrayfun 函数,该函数将某个函数应用于矩阵或数组/向量的每个元素.如果您是 matlab 新手(正如我从您的问题中假设的那样),这个提示可能会让您感到困惑。

x.^2 == arrayfun(@(a)mpower(a,2),x)

【讨论】:

    猜你喜欢
    • 2020-03-20
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多