ある列の値をすべてNaNに置換する方法
显示 更早的评论
m行n列の行列Aにおいて、i(1≦i≦n)列に含まれる数値をすべてNaNに置換した行列Bを作成する方法を教えてください。 なお、Aのi列には数値またはNaNが格納されています。
采纳的回答
更多回答(6 个)
Hiroumi Mita
2018-8-2
以下ではどうでしょうか?
%例
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
2018-8-2
列番号で指定するほうが簡単だと思いますが
次のようなプログラムで、ラベル名を探し出してその列を一括書き換えするようなことは可能です。
%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
Hiroumi Mita
2018-8-2
以下のように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
类别
在 帮助中心 和 File Exchange 中查找有关 cell 配列 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!