根据 MATLAB 的特定字符串更改 table 中元素的值
Changing the value of elements in a table, depending on a specific string for MATLAB
假设我有一个以下类型的 MATLAB table:
Node_Number Generation_Type Total_power(MW)
1 Wind 600
1 Solar 452
1 Tidal 123
2 Wind 200
2 Tidal 159
我想要做的是生成一个 table 具有完全相同的尺寸,唯一的区别是 Total_Power 列的数据值对应于风力发电类型乘以 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 循环似乎是一个可行的解决方案,但我不确定如何实现它。任何帮助将不胜感激。
只需找到类别为 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
假设我有一个以下类型的 MATLAB table:
Node_Number Generation_Type Total_power(MW)
1 Wind 600
1 Solar 452
1 Tidal 123
2 Wind 200
2 Tidal 159
我想要做的是生成一个 table 具有完全相同的尺寸,唯一的区别是 Total_Power 列的数据值对应于风力发电类型乘以 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 循环似乎是一个可行的解决方案,但我不确定如何实现它。任何帮助将不胜感激。
只需找到类别为 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