Replacing values based on a condition in a matrix.

Hi there!
I have a 2by2 matrix and am trying to replace every value in the second matrix that is greater than 20 with "on".
So basically I want something like this:
1 2
2 30
30 50
40 10
55 15
to change to this:
1 closed
2 open
30 open
40 closed
55 closed
If anyone can help that would be great! Thanks!

回答 (1 件)

Kevin Phung
Kevin Phung 2019 年 3 月 20 日
編集済み: Kevin Phung 2019 年 3 月 20 日

0 投票

%let M be your matrix;
ind = M(:,2) > 20; %grab indices along second column where value is > 20
M = num2cell(M); % youre going to need to turn it into a cell array
M(ind,2) = {'open'}; %set those indices to open
M(~ind,2) = {'closed'}; %set indices that are not to closed
M
let me know if this helps. Also, I suggest you read about cell arrays:

3 件のコメント

Megan Stapley
Megan Stapley 2019 年 3 月 20 日
Thank you so much this is exactly what I was looking for! In addition, how would I add titles to these columns?
Walter Roberson
Walter Roberson 2019 年 3 月 20 日
M = [{'title for first column', 'title for second column'}; M];
Kevin Phung
Kevin Phung 2019 年 3 月 20 日
Happy to help!
As for adding titles to the column, Walter's comment would work.
Another option is to turn the cell matrix into a table:
ind = M(:,2) > 20; %grab indices along second column where value is > 20
M = num2cell(M); % youre going to need to turn it into a cell array
M(ind,2) = {'open'}; %set those indices to open
M(~ind,2) = {'closed'}; %set indices that are not to closed
M = table(M(:,1),M(:,2),'VariableNames',{'Name1','Name2'})

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeMatrix Indexing についてさらに検索

製品

リリース

R2016b

質問済み:

2019 年 3 月 20 日

コメント済み:

2019 年 3 月 20 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by