繁体   English   中英

如何将条件放入Matlab的特定列中?

[英]How do I put a condition into a specific column for matlab?

想在这里检查我可以使用哪种代码在matlab的特定列上创建特定条件。 这样的话,我有一个文本文件(见图),

在此处输入图片说明

其中包含四列值。 这是matlab的代码,如下所示

fileID = fopen('test1.txt');
A = dlmread('test1.txt')
B = A>1000
fclose(fileID);

因此,根据这一行代码,我导入了文件并将其放置在矩阵A中。随后,我为矩阵B设置了一个条件,其中A必须具有大于1000的值。使用此方法,我可以获得返回值我想要的是“ 0”和“ 1”。 现在,我要创建一组条件,以便如果任何行中的第1、2和3列等于1,我将能够在该行中显示/打印输出“ Powergrip”。 除了该条件之外,任何行中的1,2是否应等于1,该行中是否会显示“ precisiongrip”? 我确实相信这与一系列其他条件有关,但是我不确定如何编写此条件。 请原谅我糟糕的编码能力,因为我真的很陌生。 谢谢!

首先,使用dlmread()时不需要fopen()fclose()函数,只需dlmread()使用dlmread()仅在使用fread()等其他函数时才需要它们)。

您可以使用all()函数查找在所有列(或行)中均包含1的行(或列)。 要查找所有列中均包含1的行,请执行以下操作:

C = all(B, 2); % The "2" means work across columns.

要查找第1、2和3列中有1的情况,只需传递这三列:

C = all(B(:,[1,2,3]), 2); % PowerGrip

或对于第1,2列:

D = all(B(:,[1,2]), 2);   % PrecisionGrip

要创建描述数组,您需要一个字符串单元格数组。 您可以通过多种方式生成此代码,这是一个简单的示例:

E = cell( size(C) ); % Make a cell array to hold strings, same size as C
E(:) = {'none'};     % Fill all rows with "none" to start. Could use repmat() to create E...
E(C) = {'PowerGrip'}; 
E( D & not(C) ) = {'PrecisionGrip'};

使用数字显示单词PowerGrip和PrecisionGrip可能最容易通过table完成(尽管您可以通过多种方法来完成)。 例如:

T = array2table(A)
T.Desc = E         % Add a column of descriptions...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM