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

时间:2018-03-10 11:11:04

标签: matlab conditional-statements

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

enter image description here

中有四列值。以下是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”?我确实认为这与一系列if else条件有关,但我不确定如何编写这些条件。请原谅我糟糕的编码能力,因为我对此很陌生。谢谢!

1 个答案:

答案 0 :(得分:0)

首先,在使用fopen()时,您不需要fclose()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完成(尽管你可以通过多种方式完成)。 E.g:

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