定义变量/误差方程

7视图(30天)
尼克·林赛
尼克·林赛 2016年10月1日
回答: 沃尔特·罗伯森 2016年10月2日
我有下面的代码:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%定义变量:
清晰;警告(“关闭”,MATLAB: ezplot: NotVectorized);
x (1) = 1.1;%上弹簧的位置
x (2) = 0.8;%降低弹簧的位置
x (3) = 0.95;%控制手臂的长度
x (4) = 0.6;% 0 g角弧度(Theta_0)
x(5) = 90年e3;%弹簧常数(k)
alphamax x = 0.6 * (4);%最大旋转绘图
信谊a1;从Theta_0 %的偏转角度
%方程1:垂直轮胎/轴偏转的函数α
eq1 (a1, x) = x (3) * sin (x (4)) - x (3) * sin (x (4) - a1);
图(1);clf
ezplot (@ (a1) eq1 (a1, x) [0, alphamax])
ylabel (轮胎/轴的垂直偏转)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
当我运行它的时候,我得到以下错误:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
错误使用符号/ subsindex(第766行)
无效的索引或函数定义。当定义一个函数,确保的参数是
象征性的变量和函数的主体是一个符号表达式。当索引,输入必须
数字、逻辑或“:”。
错误信谊/ privsubsasgn(第1031行)
L_tilde2 =内装式(“subsasgn”、L_tilde结构(“类型”,“()”,“潜艇”{变长度输入宗量}),R_tilde);
错误信谊/ subsasgn(第868行)
C = privsubsasgn (L R第1 {:});
错误在Project_deliverable1(14)行
eq1 (a1, x) = x (3) * sin (x (4)) - x (3) * sin (x (4) - a1);
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
我试过不同的方式定义a1,但没有任何运气。有人能摆脱一些灯吗?
非常感谢。

答案(1)

沃尔特·罗伯森
沃尔特·罗伯森 2016年10月2日
您定义数值数组x,然后定义
信谊a1;从Theta_0 %的偏转角度
eq1 (a1, x) = x (3) * sin (x (4)) - x (3) * sin (x (4) - a1);
右边的任务是象征性的,因为符号变量的存在 a1
在左边,你的定义 eq1 你有(a1, x)。a1是象征性的,但x是数字。
如果(a1, x)的两个部分都是象征性的,喜欢的
信谊a1 y
eq1 (a1, y) = x (3) * sin (x (4)) - x (3) * sin (x (4) - a1);
MATLAB就明白你想要创建一个符号函数的公式是x (3) * sin (x (4)) - x (3) * sin (x (4) - a1)。
如果两个部分(a1, x)是数字,
信谊a1
a2 = 9
eq1 (a2, x) = x (3) * sin (x (4)) - x (3) * sin (x (4) - a1);
MATLAB就了解表达式表明你想分配(象征性的)x(3)值* sin (x (4)) - x (3) * sin (x (4) - a1)的位置eq1 (a2, x (1)), eq1 (a2, x (2)), eq1 (a2, x (3)), eq1 (a2, x(4)),和eq1 (a2, x (5))。作业将失败,因为这些x(1)(5)是有效的指标为一个数组,但如果他们只是 发生了 是正整数,那么分配是可行的。
但是,未定义eq1象征性a1和数字x, MATLAB不知道让试图分配eq1 (a1, x)所以给你错误消息。
你需要决定是否你分配一个 价值 ,或者如果你分配 公式 ,或者如果你分配 函数处理 。如果你指定一个值,左边的表达式不能有任何符号作为下标变量。如果你分配一个公式,左边的表达式不能有任何数字下标,只是象征性的。如果你指定一个函数处理,左边不能有任何()下标在最后组件(但可能{}下标)。
我建议你,你想要的是:
eq1 = @ (a1) x (3) * sin (x (4)) - x (3) * sin (x (4) - a1);
图(1);clf
ezplot (eq1 [0, alphamax])
没有“信谊a1”。这将创建eq1作为单个参数命名的处理函数 a1 在匿名函数的主体。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!