ある列の値をすべてNaNに置換する方法
Show older comments
m行n列の行列Aにおいて、i(1≦i≦n)列に含まれる数値をすべてNaNに置換した行列Bを作成する方法を教えてください。 なお、Aのi列には数値またはNaNが格納されています。
Accepted Answer
More Answers (6)
Hiroumi Mita
on 2 Aug 2018
以下ではどうでしょうか?
%例
A=rand(4)%Aは成分乱数,4*4の行列
B=A%AをBにコピー
B(1,:)=NaN%Bの1行目全列をNaNに書き換え
%注':'ワイルドカード 全ての意味
A =
0.7952 0.6463 0.6797 0.4984
0.1869 0.7094 0.6551 0.9597
0.4898 0.7547 0.1626 0.3404
0.4456 0.2760 0.1190 0.5853
B =
NaN NaN NaN NaN
0.1869 0.7094 0.6551 0.9597
0.4898 0.7547 0.1626 0.3404
0.4456 0.2760 0.1190 0.5853
Hiroumi Mita
on 2 Aug 2018
列番号で指定するほうが簡単だと思いますが
次のようなプログラムで、ラベル名を探し出してその列を一括書き換えするようなことは可能です。
%xlsの読み込み
[num,txt,raw]=xlsread('Book1.xlsx')
num =
1 11
2 12
3 13
4 14
5 15
txt =
1×2 の cell 配列
'u' 'y'
raw =
6×2 の cell 配列
'u' 'y'
[1] [11]
[2] [12]
[3] [13]
[4] [14]
[5] [15]
%txtの文字列が'y'の列番号を探しそれをNとする
N=find(strcmp(txt,'y')==1)
data(:,N)=NaN %N列を全部NaNにする
data =
1 NaN
2 NaN
3 NaN
4 NaN
5 NaN
SH
on 2 Aug 2018
0 votes
SH
on 2 Aug 2018
0 votes
Hiroumi Mita
on 2 Aug 2018
以下のようにxlsから読んだデータの数値numを用いればだいじょうぶでしょう。
[num,txt,raw]=xlsread('Book1.xls')
B=num %数値データnumをBに代入<-ココ
B(:,1)=NaN
num =
NaN 0.6991 0.1386 0.2543
0.7513 0.8909 0.1493 0.8143
0.2551 NaN 0.2575 0.2435
0.5060 0.5472 NaN 0.9293
txt =
5×4 の cell 配列
'u1' 'u2' 'u3' 'u4'
'NaN' '' '' ''
'' '' '' ''
'' 'NaN' '' ''
'' '' 'NaN' ''
raw =
5×4 の cell 配列
'u1' 'u2' 'u3' 'u4'
'NaN' [0.6991] [0.1386] [0.2543]
[0.7513] [0.8909] [0.1493] [0.8143]
[0.2551] 'NaN' [0.2575] [0.2435]
[0.5060] [0.5472] 'NaN' [0.9293]
B =
NaN 0.6991 0.1386 0.2543
0.7513 0.8909 0.1493 0.8143
0.2551 NaN 0.2575 0.2435
0.5060 0.5472 NaN 0.9293
B =
NaN 0.6991 0.1386 0.2543
NaN 0.8909 0.1493 0.8143
NaN NaN 0.2575 0.2435
NaN 0.5472 NaN 0.9293
SH
on 2 Aug 2018
0 votes
Categories
Find more on cell 配列 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!