首页 > 解决方案 > Matlab Structures:如何比较结构的内容?收到以下错误

问题描述

我有下面的结构和价值。当我尝试比较该字段的值时,出现以下错误。我能做些什么?

输入

XYZ.Element_2 =='Fundamental'
if XYZ.Element_2 == 'RMS'
    var33=1
else
    var33=0
end

输出

Matrix dimensions must agree.

Error in sample50main (line 38)
if XYZ.Element_2 == 'RMS'

标签: matlabstructure

解决方案


看起来问题是 MATLAB 正在尝试进行字符数组比较,并且由于这些数组没有相等数量的字符,因此会引发维度错误。可以解决此问题的实现可能是使用双引号进行字符串比较""。或者,您可以使用strcmp()上面评论中描述的功能。以下是两种实现:

方法一:使用双引号

条件真:

XYZ.Element_2 = 'Fundamental';

if XYZ.Element_2 == "RMS"
    var33 = 1;
else
    var33 = 0;
end

条件错误:

XYZ.Element_2 = 'RMS';

if XYZ.Element_2 == "RMS"
    var33 = 1;
else
    var33 = 0;
end

方法二:使用strcmp()函数

条件真:

XYZ.Element_2 = 'Fundamental';

if strcmp(XYZ.Element_2,'RMS')
    var33 = 1;
else
    var33 = 0;
end

条件灯:

XYZ.Element_2 = 'RMS';

if strcmp(XYZ.Element_2,'RMS')
    var33 = 1;
else
    var33 = 0;
end

使用 MATLAB R2019b 运行


推荐阅读