How to convert cell to numeric

10 ビュー (過去 30 日間)
José Javier Rubio Rubio
José Javier Rubio Rubio 2020 年 12 月 10 日
回答済み: Arjun 2024 年 9 月 5 日
I have used "readtable" in order to import the same column from several excel. The type of data is "1P", "2P"...."6P". Once MATLAB has imported them, I use table2array to convert the table into an array. After this operation, I'd like to convert the values of each cell into numeric, I mean, convert the cell with 1P into 1, 2P into 2... 6P into 6. I have tried it by using "cell2mat" and then "str2num" but it doesn't work. Anyone can help me?
Thanks in advance.
for i=1:12
energia_activa(:,i)=readmatrix(meses(i),'Range','C2:C2999');
energia_reactiva(:,i)=readmatrix(meses(i),'Range','D2:D2999');
periodo(:,i)=readtable(meses(i),'Range','F2:F2999');
end
potencia_consumida=energia_activa.*4;
%Periodos
periodo_numcar=table2array(periodo);
periodo_num=zeros(2997,12);
for i=1:12
periodo_num=cell2mat(periodo_numcar(:,i));
end
  1 件のコメント
Rik
Rik 2020 年 12 月 10 日
It is not quite clear to me what your data actually is, but why do you expect cell2mat to know what you want? You should write a parsing function that will convert your input char array to a value. Then you can either use a loop or cellfun to process the entire array.
(and don't use str2num, use str2double instead)

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

回答 (1 件)

Arjun
Arjun 2024 年 9 月 5 日
I understand that you want to convert data which is currently in string format(“1P”) into numeric format(1).
To convert values like “1P”, “2P”, “3P” to numeric 1,2,3 in MATLAB, you can use the string manipulation functions. Since “cell2mat” and “str2num” aren't directly applicable here due to the presence of the letter "P", you can use “str2double” in combination with “erase” to remove the "P" and then convert the string to a number.
Kindly have a look at the modified code:
for i = 1:12
energia_activa(:, i) = readmatrix(meses(i), 'Range', 'C2:C2999');
energia_reactiva(:, i) = readmatrix(meses(i), 'Range', 'D2:D2999');
periodo(:, i) = readtable(meses(i), 'Range', 'F2:F2999');
end
potencia_consumida = energia_activa .* 4;
% Convert periodos to numeric values
periodo_numcar = table2array(periodo);
periodo_num = zeros(2997, 12);
for i = 1:12
% Remove the 'P' character and convert to double
periodo_num(:, i) = str2double(erase(periodo_numcar(:, i), 'P'));
end
Explanation:
  • erase(periodo_numcar(:, i), 'P'): This function removes the "P" character from each string in the column.
  • str2double(...): Converts the resulting strings (e.g., "1", "2", etc.) to numeric values.
To learn more about the above functions, kindly refer to the following documentation links.
I hope this helps!

カテゴリ

Help Center および File ExchangeData Type Conversion についてさらに検索

タグ

製品


リリース

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by