【问题标题】:Strange behaviour with vector operations in MATLABMATLAB 中向量运算的奇怪行为
【发布时间】:2014-10-08 20:59:04
【问题描述】:

我有一个公式

F = (-k.^(3/2) .* sqrt(4 .* c .* x + k) + 2 .* x .* k .* c + k.^2) / (2 .* c)

并且我正在尝试将 F 与 c 的一系列值绘制为常数 x 和 k 值,如下所示:

x = 0.01;
c = 10000:10000:100000;
k = 100000;
F = (-k.^(3/2) .* sqrt(4 .* c .* x + k) + 2 .* x .* k .* c + k.^2) / (2 .* c)

此时我假设 matlab 会给我一个与 c 大小相同的向量,但它只是打印:

F =

   47.1563

针对常数 c 和 x 的一系列 k 值绘制 F 可以正常工作,但上述情况并非如此。

谁能帮我解释一下?

【问题讨论】:

  • 师。您正在使用矩阵除法,您忘记了在除法中的多重位置中放入的那个小点! / -> ./
  • 我现在在猜测,但我认为您正在将 vec(a)=b*vec(c) 更改为 b=vec(a)/vec(c),因此您会得到一个标量值。尝试做(...).*(2.*C).^(-1)

标签: matlab vector plot operations


【解决方案1】:

使用元素智能除法./,类似于.*

F = (-k.^(3/2) .* sqrt(4 .* c .* x + k) + 2 .* x .* k .* c + k.^2) ./ (2 .* c)

/ 用于右矩阵除法:A/B 等价于mrdivide(A,B),它求解x 的(线性)方程组x*B = A,而./ 只是元素方面的分工。

【讨论】:

  • +1 但您应该添加解释为什么/ 会返回单个值
  • 好点。 / 是右矩阵除法。 A/B 等价于 mrdivide(A,B),求解 x*B = A 的(线性)方程组。
  • 我冒昧地将您的解释转移到解决方案中。问题以“谁能向我解释这个”结尾,所以我认为正确的解决方案应该有一个解释,而不仅仅是纠正错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-06
  • 1970-01-01
  • 2015-04-15
  • 2012-02-29
  • 1970-01-01
相关资源
最近更新 更多