【问题标题】:Plottability of scalar times vector products标量时间向量积的可绘图性
【发布时间】:2019-02-18 18:00:26
【问题描述】:

我创建了两个函数:framet1。第一个(为简单起见,我在这里用eye 替换了某个矩阵)返回三个3 维向量。

function [frames] = frame(a1,a2,a3)

      L = a1*a2*a3*eye(3);

      frames(1,:)= L*([1,0,0])';
      frames(2,:)=L*([0,1,0])';
      frames(3,:)=L*([0,0,1])';

end

第二个函数将两个标量(Bphi1)和三个向量(通过矩阵Frame)作为输入并返回另一个:

function [t1] = t1(B,Frame,phi1) 

 ex=Frame(1,:);
 ey=Frame(2,:);
 ez=Frame(3,:); 

 t1 = -sin(phi1)*ex  - cos(B)*cos(phi1)*ey  + cos(phi1)*sin(B)*ez ;

end

当我想以 phi1B 作为向量进行绘图或执行任何操作时,显然我遇到了问题,因为像 sin(phi1)*ex 这样的术语最终会出现错误的维度。将它们替换为sin(phi1).*ex 显然也是错误的,因为ex 的维度始终为3,而sin(phi1) 的维度为phi1

例子:

phi1=linspace(0,2*pi);
plot(phi1,t1(pi/2,frame(1,1,1),phi1))

.

Error using  * 
Incorrect dimensions for matrix multiplication. Check that the number of columns in the first matrix matches the
number of rows in the second matrix. To perform elementwise multiplication, use '.*'.

我在许多其他情况下都遇到过这个问题的解决方法是什么?

【问题讨论】:

  • 您使用的是哪个版本的 MATLAB?这可能与任何涉及隐式扩展的答案有关
  • @Wolfie 版本。 R2018a

标签: matlab vector


【解决方案1】:

你只需要转置phi1,其余维度都可以。

plot(phi1, t1(pi/2,frame(1,1,1),phi1.'));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 2021-01-23
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多