如何比较 matlab 单元格或结构体

发布于 2024-10-19 15:01:28 字数 266 浏览 17 评论 0原文

可能的重复:
Octave/MATLAB:如何比较结构是否相等? < /p>

是matlab 单元或结构对象有一个简单的比较函数吗? 使用 '==' 似乎不起作用:(

Possible Duplicate:
Octave/MATLAB: How to compare structs for equality?

is there a simple comparison function for matlab cell or struct objects?
using '==' doesn't seem to work :(

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情深已缘浅 2024-10-26 15:01:28

如果您想知道两个元胞数组或结构对象是否完全相同,您可以随时使用 等号

If you want to know if two cell arrays or struct objects are exactly equal you could always use isequaln.

满栀 2024-10-26 15:01:28

使用 isequal 比较两个单元格。但请注意,即使对于数组,也不建议使用 ==

>> A = [1 2 3 4 5];
>> B = [1 2 3 4 5];
>> A == B
ans =

     1     1     1     1     1

例如,您需要使用进一步的技巧在 if 语句中使用该表达式。

不建议将 == 用于 double 类型的变量,原因是 MATLAB 使用 IEEE 754 表示形式。例如:

  >> .1 + .1 + .1 == .3

  ans =

       0

要更稳健地比较双精度值,您可以使用 MATLAB 中的 abs 函数:

>> if ( abs( (.1+.1+.1) - .3 ) < 1e-10 ); disp('Values are pretty close although not necessarily bit equal'); end
Values are pretty close although not necessarily bit equal
>> 

Use isequal to compare two cells. Note however that == is not advised even for arrays:

>> A = [1 2 3 4 5];
>> B = [1 2 3 4 5];
>> A == B
ans =

     1     1     1     1     1

You would need to use a further trick to use that expression in a if statement for instance.

The reason == is not recommended for variables of type double is because of the IEEE 754 representation use by MATLAB. For instance:

  >> .1 + .1 + .1 == .3

  ans =

       0

To compare double values more robustly, you can use the abs function in MATLAB:

>> if ( abs( (.1+.1+.1) - .3 ) < 1e-10 ); disp('Values are pretty close although not necessarily bit equal'); end
Values are pretty close although not necessarily bit equal
>> 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文