Men det har med att jag manuellt valde RTOS i botten. Det är ett tillval
![Smile :)](./images/smilies/icon_smile.gif)
Kod: Markera allt
function test2()
lambda = 0.15;
A = [1 2 3 4 5 6 7 8 9 10; 4 1 5 6 0 2 5 6 2 10; 3 5 6 1 6 8 4 2 9 5; 2 4 5 6 2 1 7 9 6 4];
b = 1:4;
b = b';
x1 = linsolve(A, b)
x2 = stls_regression(A, b, lambda)
b1 = A*x1
b2 = A*x2
end
function x = stls_regression(A, b, lambda)
x = linsolve2(A, b);
state_dimension = size(b, 2);
for k=1:20
smallinds = (abs(x)<lambda);
x(smallinds) = 0;
for ind = 1:state_dimension
biginds = ~smallinds(:,ind);
x(biginds,ind) = linsolve2(A(:,biginds),b(:,ind));
end
end
end
function x = linsolve2(A, b)
[A, b] = backsubstitution(A'*A, A'*b);
x = solveUp(A, b);
end
function [x] = solveUp(A, b)
s = length(A);
x = zeros(s,1);
x(s) = b(s)/A(s,s);
for i = s-1:-1:1
sum = 0;
for j = s:-1:i+1
sum = sum + A(i,j)*x(j);
end
x(i) = (b(i)- sum)/A(i,i);
end
end
function [A, b] = backsubstitution(A, b)
s = length(A);
for j = 1:(s-1)
for i = s:-1:j+1
m = A(i,j)/A(j,j);
A(i,:) = A(i,:) - m*A(j,:);
b(i) = b(i) - m*b(j);
end
end
end
Då måste du skriva i assembler, eftersom alla kompilatorer, oavsett om det är C eller inte, fullständigt skiter i vad du tycker.Här gäller det att minska alla instruktioner så mycket det går.
Kod: Markera allt
uin32_t ticks = HAL_GetTick();
RunCalculationFloat()
printf("Float tid %d ms", HAL_GetTick() - ticks);
ticks = HAL_GetTick();
RunCalculationInt()
printf("Int tid %d ms", HAL_GetTick() - ticks);