Вы также можете сделать это, если хотите использовать textcan:
test_txt = ['(1, 1.89), (1, 3.93), (4, 8.65), (4, 9.35), (1, 2.4), (1, 2.37), (1, 2.14), (1, 2.35), (4, 7.46), (4, 9.21), (4, 9.21), (1, 1.48), (1, 2.96), (4, 10.39), (1, 2.69), (1, 1.25), (1, 2.39), (1, 3.08), (1, 2.81), (1, 2.72), (1, 1.05), (1, 4.73), (1, 1.7), (1, 4.49), (1, 2.25), (1, 2.73), (1, 3.69), (1, 3.23), (4, 7.78), (1, 2.7), (4, 7.47), (1, 2.01), (4, 7.41), (1, 2.4), (1, 1.81), (1, 2.75), (4, 8.35), (4, 7.88), (1, 2.33), (4, 9.26), (1, 2.74), (1, 1.43), (1, 3.14), (1, 4.44), (1, 2.51), (4, 6.85), (4, 10.14), (4, 8.86), (4, 9.45), (4, 8.37), (1, 3.73), (4, 8.33), (1, 3.51), (4, 7.74), (1, 3.65), (1, 2.89), (1, 4.44), (1, 1.46), (1, 3.2), (4, 8.78), (1, 3.46), (4, 8.55), (4, 7.92), (1, 3.53), (1, 3.4), (1, 3.05), (4, 9.84), (4, 10.72), (1, 2.35), (4, 9.04), (1, 2.49), (1, 3.17), (1, 2.92), (1, 1.54), (1, 1.05), (4, 7.55), (4, 6.87), (4, 8.1), (4, 8.3), (1, 1.59), (4, 7.95), (4, 9.74), (1, 3.38), (4, 9.26), (4, 9.49), (4, 9.17), (1, 1.7), (1, 1.05), (4, 8.34), (1, 3.79), (4, 7.61), (1, 1.24), (4, 9.3), (1, 1.46), (4, 7.14), (1, 3.88), (1, 3.71), (4, 8.5), (1, 1.05), (4, 7.8), (1, 2.43), (4, 7.84), (1, 1.72), (1, 3.72), (4, 7.78), (1, 1.34), (1, 1.85), (1, 2.15), (1, 1.64), (4, 8.25), (4, 8.06), (4, 9.28), (1, 1.05), (4, 8.85), (1, 1.91), (4, 8.31), (4, 8.69), (1, 1.93), (4, 8.26), (1, 1.96), (1, 3.09), (1, 2.7), (4, 9.07), (4, 9.12), (4, 9.62), (1, 3.98), (1, 1.05), (4, 8.31), (1, 2.35), (4, 7.07), (1, 4.01), (1, 1.05), (4, 8.04), (1, 1.73), (1, 1.21), (4, 8.66), (4, 10.87), (1, 4.13), (4, 8.75), (4, 7.61), (4, 7.44), (1, 1.05), (1, 2.81), (1, 3.27), (4, 9.52), (4, 8.67), (4, 8.93), (1, 1.05), (1, 3.36), (4, 9.08), (1, 2.8), (4, 7.95), (4, 9.65), (1, 3.09), (1, 3.25), (1, 3.11), (1, 2.6), (4, 8.99), (4, 8.02), (4, 8.84), (4, 8.22), (4, 8.71), (1, 2.23), (1, 2.25), (4, 8.67), (4, 9.06), (4, 6.9), (4, 8.85), (4, 8.29), (1, 3.07), (1, 4.18), (4, 7.63), (4, 8.88), (1, 2.33), (1, 1.84), (1, 2.95), (1, 3.26), (1, 2.61), (4, 6.2), (1, 3.41), (4, 9.61), (4, 8.38), (1, 2.34), (4, 10.3), (4, 6.93), (1, 2.64), (4, 8.97), (4, 7.21), (1, 3.13), (4, 7.7), (1, 2.5), (4, 9.13), (4, 8.45), (4, 8.35), (1, 3.14), (4, 6.59), (1, 2.99), (4, 6.6), (4, 7.69), (1, 1.64), (4, 8.44), (1, 2.79), (4, 6.7), (1, 3.35), (1, 3.39), (4, 7.57), (1, 3.34), (4, 9.68), (4, 7.94), (1, 1.92), (4, 9.16), (4, 8.67), (1, 1.05), (4, 9.6), (4, 8.21), (1, 3.15), (1, 1.58), (4, 9.36), (1, 2.01)'] ;
s = size(test_txt,2) ;
N = floor(s/9) ;
C = textscan(test_txt,'(%d,%.2f),',N) ;
x = C{1} ;
y = C{2} ;
Я попробовал это, и я думаю, что это работает так, как вы хотели (я проверил первое и последнее значения пар x и y, которые такие же, как в test_txt). N
вычисляется путем деления размера вектора символов s
на размер одной пары скобок (1, 1.11)
(которая имеет 9 символов, включая скобки и пробел после virgule) в предположении.
PS: (Edit !!)
Обратите внимание, вычисление N
выше этого работает, только если формат ваших пар одинаков для всех пар! Но это не тот случай (например, четвертые пары - (1, 2.4)
, в то время как предыдущее вычисление s/9
будет согласованным, только если оно будет отформатировано как (1, 2.40)
.
Лучший способ определить N
было бы подсчитать открывающую скобку (
следующим образом:
index_bracket = find(test_txt(:)=='(') ;
N = size(index_bracket,1) ;
Это должно работать (и извините за редактирование)!