为什么我得到一个无效的文本字符错误?

41视图(30天)
埃里克
埃里克 2023年5月5日15:13
评论道: 沃尔特·罗伯森 2023年5月6日17:09
你好!这是代码:
V1 = [3 20 3];
V2 = 10 3.5 [3];
V3 = [-123 32 34];
信谊vx v vz真实
vslk = [vx;v;vz];
vfl =简化(规范(vskl));
阿尔法=这些“可信赖医疗组织”(vx / vfl);
β=这些“可信赖医疗组织”(v / vfl);
伽马=这些“可信赖医疗组织”(vz / vfl);
i = 1:3
disp ([“vectorul”num2str(我),“:”]);
VX = eval ([“V”,我]);
vxn = VX (1);
vyn = VX (2);
却= VX (3);
vn = eval(潜艇(vfl [vx v vz], [vxn vyn却]));
disp ([“modulul vectorului”num2str(我),“:”num2str (vn)]);
alfan = rad2deg (eval(潜艇(阿尔法,[vx v vz], [vxn vyn却))));
betan = rad2deg (eval(潜艇(β,[vx v vz], [vxn vyn却))));
这种= rad2deg (eval(潜艇(伽马,[vx v vz], [vxn vyn却))));
disp ([“unghiul阿尔法al vectorului”num2str(我),“:”num2str (alfan),“年级”]);
disp ([“unghiulβal vectorului”num2str(我),“:”num2str (betan),“年级”]);
disp ([“unghiul伽马al vectorului”num2str(我),“:”num2str(忍受)“年级”]);
结束
它给了我以下错误:
错误使用untitled4
错误:无效的文本字符。检查不支持的象征,看不见万博1manbetx
非ascii字符的字符,或粘贴。
我怎么能看到这条线有问题吗?

答案(2)

沃尔特·罗伯森
沃尔特·罗伯森 2023年5月5日15:49
i = 1:3
将包含 数字 值。
VX = eval ([“V”,我]);
当您使用[]操作符之间的特征向量和一个数字,结果是一样的,如果你所做的
VX = eval ([“V”char (i)]);
char (1) 给你' 1 '的字符(数字1)。char(1)给出了字符的Unicode代码点是1,第二个Unicode字符(首先是代码点(0),性格是传统上被称为全音阶,标题的开始; https://www.compart.com/en/unicode/U + 0001
如何解决这个问题?容易:不要使用eval。
V1 = [3 20 3];
V2 = 10 3.5 [3];
V3 = [-123 32 34];
Vs = {V1、V2、V3};
i = 1:3
disp ([“vectorul”num2str(我),“:”]);
VX = Vs{我};
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2023年5月5日16:00时
没有记录的eval()函数符号表达式。
vn = eval(潜艇(vfl [vx v vz], [vxn vyn却]));
可以做几乎任何东西,它不会是一个“错误”,因为这种行为不是由Mathworks定义。
在实践中,eval()符号表达式的处理一样的eval()符号表达式的字符(),如果你写了
vn = eval (char(潜艇(vfl [vx v vz], [vxn vyn却))));
这听起来合理,但问题是,char()的一个象征性的表达主要是显示的目的,并不是一定要发生有效的语法内部符号表情和不确定发生有效MATLAB的语法。也有一些情况下,符号函数的参数顺序不同的参数名称类似的数值函数;例如历史符号函数的参数 β 比数值函数的顺序是不同的吗 β 。使用char()生成一个人类可读的形式, 设计生产的东西可以数值执行。
所以,不要使用eval()符号表达式。这是未定义的,会给你错误信息在某些情况下,默默地会成功但是在其他情况下给你不想要的结果。
使用潜艇()代替了象征性的数字,然后双()符号数得到一个双精度数。

登录置评。


Atsushi上野
Atsushi上野 2023年5月5日15:43
你应该改变值我的字符串数据。
VX = eval ([“V”num2str(我))
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2023年5月6日17:09
公平地说, 特定的 操作时,选择一个V1、V2、V3变量,这部分不涉及任何操作符号表达式。的
vn = eval(潜艇(vfl [vx v vz], [vxn vyn却]));
是一个 不同的 代码的一部分。eval()是两个被滥用 不同的 在原始代码的方法。

登录置评。

s manbetx 845


释放

R2022b

社区寻宝

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

开始狩猎!