Processing data of different classes read from the same column in an excel file
1 回表示 (過去 30 日間)
古いコメントを表示
Usually when I read large amounts of data from excel files the format of data in every column are the same. For example, a targetted column only contains numerical data. However, sometimes the same column alternately contains data that are not in the numerical format. For example, inbetween normal numerical values the data happens to have been entered (let's say by some operator) as fractions:
1,50
2,50
0,40
1/3
1/5
1/3
1/4
0,10
0,30
4,50
This causes a stop in the assignment of the values to an array because assigned data have to be of the same type. Naturally for a small table I could manually change these fractions (1/3, 1/5 etc.) into their nuzmerical values but for an extremely large dataset this can be very cumbersome.
How can I write get Matlab to detect these "fractions" in the columns and recalculate them into their numerical equivalents?
0 件のコメント
回答 (2 件)
qrqr
2019 年 2 月 5 日
編集済み: qrqr
2019 年 2 月 5 日
For example, if A = {1, 2} is 2/4 as a character string when reading from Excel to MATLAB
If you do str2num (A {1,2}), it will be the numerical value of 0.5
A = '2/4'
%ans '2/4'
a = 2/4
%ans 0.5
str2num(A)
%ans 0.5
Can I do this by matrix for for statement?
If sr2num is set for intermediate values, an error will occur, so it is good to use [isnumeric] to determine the numerical value
A = {'2/4',[2/4];...
'2/6',[2/6];...
'3/9',[3/9]};
%A{1,2} → 0.5
%A{2,2} → 0.333
%A{3,2} → 0.333
%A{1,1} → '2/4'
%A{2,1} → '2/6'
%A{3,1} → '3/9'
[x,y] = size(A);% Examine the number of matrices
%In this example x=2 y=3
for i = 1:y
for k = 1:x
if isnumeric(A{i,k}) == 0
A{i,k} = str2num(A{i,k})
end
end
end
%result
%A{1,2} → 0.5
%A{2,2} → 0.333
%A{3,2} → 0.333
%A{1,1} → 0.5
%A{2,1} → 0.333
%A{3,1} → 0.333
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Spreadsheets についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!