我想從文本文件中提取數字。 首先,我讀文件和進口是爲形式的單元陣列:MATLAB - 從字符串數組中提取數字
A = {
'1 0 0 0 - 0: 0.000741764'
'2 0 0 0 - 0: 100'
'3 0 0 0 - 0: 100'
'4 0 0 0 - 0: 100'
'5 0 0 0 - 0: 0.00124598'
'6 0 0 0 - 0: 0.000612725'
'7 0 0 0 - 0: 0.000188365'
'8 0 0 0 - 0: 0'
'9 0 0 0 - 0: 0'
'10 0 0 0 - 0: 0'
'11 0 0 0 - 0: 0'
'12 0 0 0 - 0: 0'};
我需要得到正確的數量,根據左整數的值。 比如我需要知道對應於數字3和6(100 0.000612725)值:
'3 0 0 0 - 0: 100'
'6 0 0 0 - 0: 0.000612725'
這是我的代碼:
clear all
close all
clc
A = {
'1 0 0 0 - 0: 0.000741764'
'2 0 0 0 - 0: 100'
'3 0 0 0 - 0: 100'
'4 0 0 0 - 0: 100'
'5 0 0 0 - 0: 0.00124598'
'6 0 0 0 - 0: 0.000612725'
'7 0 0 0 - 0: 0.000188365'
'8 0 0 0 - 0: 0'
'9 0 0 0 - 0: 0'
'10 0 0 0 - 0: 0'
'11 0 0 0 - 0: 0'
'12 0 0 0 - 0: 0'};
THREE = 3;
SIX = 6;
M = cellfun(@str2num, A, 'UniformOutput', false);
Values = cell2mat(M);
Index_3 = find(Values(:,1) == SIX);
Index_6 = find(Values(:,1) == SIX);
sp_3 = strsplit(A{Index_3},':');
sp_6 = strsplit(A{Index_6},':');
VALUE_3 = str2double(sp_3(end));
VALUE_6 = str2double(sp_6(end));
但我得到一個錯誤:
Error using cat
Dimensions of matrices being concatenated are not consistent.
Error in cell2mat (line 84)
m{n} = cat(1,c{:,n});
Error in test (line 23)
Values = cell2mat(M);
,因爲:
M =
[1x4 double]
[1x104 double]
[1x104 double]
[1x104 double]
[1x4 double]
[1x4 double]
[1x4 double]
[1x4 double]
[1x4 double]
[1x4 double]
[1x4 double]
[1x4 double]
我想:
str2double
代替,但我得到NaN的所有值M.
我不會將這些信息添加到所有我的答案中:D Well解釋! +1 –
@rayryeng一如既往的輝煌!謝謝! – Trenera
@SanthanSalai - 謝謝:)正則表達式我覺得他們**總是**需要很多解釋。這是一種黑人藝術,很多人都不太明白(包括我),所以使用它們的問題需要解釋,因爲這兩個'regexp'調用非常強大,但每次調用的模式看起來都像一個真正的硬的外語。我覺得,如果你能解釋發生了什麼事情,那麼不僅對增強概念有利,而且對其他人也有利,這樣他們就能看到正則表達式的強大程度。感謝您的投票:) – rayryeng