How to read just the powers from matlab output
조회 수: 2 (최근 30일)
이전 댓글 표시
How to read/print the powers from the matlab output function coeffs ?
l^4*w^3*z^1 and l^4*w^3
I would like to obtain numbers 341 and 340 from the above sequence.
[r, t] = coeffs(10*z^2*w^4 + 5*w^2*l^2 + 2*z^6)
t =
[ l^2*w^2, w^4*z^2, z^6]
% 220 402 006
댓글 수: 0
채택된 답변
Ameer Hamza
2020년 6월 19일
How are the terms separated? If separated using '+' operator, then try the following code
str = '10*z^2*w^4 + 5*w^2*l^2 + 2*z^6';
patterns = {'w\^([0-9]*)', 'l\^([0-9]*)', 'z\^([0-9]*)'};
tokens = cellfun(@(p) {regexp(strsplit(str, '+'), p, 'tokens')}, patterns);
y = cellfun(@(token) {cellfun(@helperFun, token)}, tokens);
y = reshape(cell2mat(y(:)), 1, []);
function y = helperFun(x)
if ~isempty(x)
y = str2double(x{1}{1});
else
y = 0;
end
end
Result
>> y
y =
4 0 2 2 2 0 0 0 6
댓글 수: 3
Ameer Hamza
2020년 6월 19일
But OP mentioned for the first example that "I would like to obtain numbers 341 and 340 from the above sequence." and for the second example
[ l^2*w^2, w^4*z^2, z^6]
% 220 402 006
so I guessed that the absent variables would have 0 exponents.
Image Analyst
2020년 6월 19일
Oh, that could be another interpretation. I was wondering how he got those numbers. Let's hope for clarification from Ole. It seems he has totally forgotten about this question he posted.
추가 답변 (1개)
Image Analyst
2020년 6월 18일
Here's one way, using isstrprop():
chr = 'l^4*w^3*z^1 and 8^4*w^3' % Create test character array.
mask = isstrprop(chr,'digit') % Get locations of numbers
caretLocations = chr == '^'
caretLocations = [false, caretLocations(1:end-1)] % Shift to the right.
mask = mask & caretLocations
chr(~mask) = ' '
numbers = sscanf(chr, ' %f')
참고 항목
카테고리
Help Center 및 File Exchange에서 Characters and Strings에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!