根据MATLAB的特定字符串更改表中元素的值

时间:2018-04-07 19:14:49

标签: matlab matlab-table

假设我有一个以下类型的MATLAB表:

Node_Number Generation_Type Total_power(MW)

1           Wind             600 
1           Solar            452
1           Tidal            123
2           Wind             200
2           Tidal            159

我想要做的是生成一个具有完全相同尺寸的表,唯一的区别是Total_Power列的数据值对应于Wind生成类型乘以0.5。因此,我得到的结果将是:

Node_Number Generation_Type Total_power(MW)

1           Wind             300 
1           Solar            452
1           Tidal            123
2           Wind             100
2           Tidal            159

我认为可以解决的问题是某些代码会扫描所有具有字符串'Wind'的行,然后在找到具有此字符串的行之后,将此行的第3列乘以0.5。 for循环似乎是一个可行的解决方案,但我不知道如何实现它。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

只需找到类别为Wind的行的索引,然后您就可以通过调用T(index,:)来访问它们。

clc; clear;
T=readtable('data.txt');
rows = find(ismember(T.Generation_Type,'Wind'));
T(rows,:).Total_power_MW_=T(rows,:).Total_power_MW_*0.5

输出:

Node_Number    Generation_Type    Total_power_MW_
___________    _______________    _______________

1              'Wind'             300            
1              'Solar'            452            
1              'Tidal'            123            
2              'Wind'             100            
2              'Tidal'            159