ある列の値をすべてNaNに置換する方法
33 views (last 30 days)
Show older comments
m行n列の行列Aにおいて、i(1≦i≦n)列に含まれる数値をすべてNaNに置換した行列Bを作成する方法を教えてください。 なお、Aのi列には数値またはNaNが格納されています。
0 Comments
Accepted Answer
Hiroumi Mita
on 6 Aug 2018
セル配列を使うことで、文字列と数値の混在したデータを作ることができます。
%xlsの読み込み
[num,txt,raw]=xlsread('Book1.xls')
%数値扱い
B=num
B(:,1)=NaN
%セル配列扱い Braw=raw Braw(2:5,1)={'NaN'}
Braw = 5×4 の cell 配列
{'u1' } {'u2' } {'u3' } {'u4' }
{'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]}
0 Comments
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
0 Comments
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
0 Comments
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
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!