概述
– 来自评论—
有什么问题
通常,尝试将大小为3×3的内容分配给较小的数组会导致Matlab抛出错误.
但是对于sym,会发生以下情况:
I=sym(ones(3));
a=sym(zeros(5,1))
n=3
a(1:n)=I
a =
1
1
1
0
0
出于某种原因,使用类sym的变量不会导致错误.如果在I中给出的元素多于在a的n个指定位置中给出的元素.它会将I的前n个值分配给a
为什么
在sim的classdef中的subsasgn方法(subsasgn是用于语法a(1)= I的方法)没有检查大小(不完全正确,好像a是一个空的sym数组并且导致错误)该函数迭代通过n个位置,将I的前n个值分配给a中的每个单独位置.
例如,上面的代码等同于执行(1:n)= I(1:n),这将是使用double生成此行为的命令.
这是有意的吗?
不是头绪!
帮助文档没有提到这种不同的行为,所以我认为这是一个错误,服务请求已被放入文档或修复.
可以做些什么
小心 – 抱歉,但这就是我必须避免这个问题
编辑 – 支持请求被回答—
Yes you are right; I apologize for the inconvenience this unexpected behavior might cause. This indeed appears as being inconsistent with base MATLAB behavior. Thank you for bringing this to our attention as this behavior should be documented (if not issuing a warning). I will create a relevant documentation enhancement today.
……似乎很快就不会出现错误而是有记录的行为
最后
以上就是贤惠毛巾为你收集整理的matlab符号循环赋值,matlab – 符号赋值有什么问题?的全部内容,希望文章能够帮你解决matlab符号循环赋值,matlab – 符号赋值有什么问题?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复