Drop column of values using if function
1 次查看(过去 30 天)
显示 更早的评论
I'm trying add some lines of code which drop columns that don't meet the condition. My values are 1500x28 matrix. Example:
if condition met
drop specific coloumn that meets condition
I know using A(:,3)=[] would drop column 3 but how do I not specify column number.
Thanks!
2 个评论
Scott MacKenzie
2021-4-22
You can specify the column number as a variable. But, you'll need to set that variable to 3, perhaps through an if-else arrangement that includes the condition you allude to. More details would be helpful.
回答(1 个)
Scott MacKenzie
2021-4-22
编辑:Scott MacKenzie
2021-4-22
Set up a for-loop for your code, something like this.
time = MA.data(:,2);
for i=3:30
ma_flexion = MA.data(:,i);
ma_flexion_cm=ma_flexion*100;
mini_ma_flexion=min(ma_flexion_cm);
maxi_ma_flexion=max(ma_flexion_cm);
if (maxi_ma_flexion-mini_ma_flexion)<=(0.5*mini_ma_flexion)
ma_flexion_cm(:,i)=[];
end
end
The variable i will equal the column number whenever the condition is true, and the corresponding column will be deleted. Note: I deleted the semi-colon at the end of the if-expression.
4 个评论
Scott MacKenzie
2021-4-22
编辑:Scott MacKenzie
2021-4-22
Well, I said "something like this". I guess I'm not quite sure what you are trying to do. Maybe you need the loop setup like this:
ma_flexion = MA.data(:,3:30);
ma_flexion_cm=ma_flexion*100;
mini_ma_flexion=min(ma_flexion_cm); % array with 27 elements
maxi_ma_flexion=max(ma_flexion_cm); % array with 27 elements
for i=1:27
if (maxi_ma_flexion(i)-mini_ma_flexion(i))<=(0.5*mini_ma_flexion(i))
ma_flexion_cm(:,i)=[];
end
end
I think you can even do this without the for-loop. Try replacing the last five lines above with this:
conditionLogical = (maxi_ma_flexion-mini_ma_flexion)<=(0.5*mini_ma_flexion);
ma_flexion_cm(:,conditionLogical)=[];
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!