How to assign a value to a variable in an equation
17 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi
I have an equation and I want to assign a value to its variable
I wrote the code below but it didn't change after running the code what can I do
Thanks
My code
clc
clear all
close all
warning off
zafar_queue =readtable('zafar_queue.xlsx');
Y = zafar_queue.nVehContrib;
data = Y';
x_train = floor(0.9*numel(data));
dataTrain =data(1:x_train);
n = length(dataTrain);
u = 0.1* randn(n,1) ;
% Import mydata
Opt = arxOptions;
Opt.InitialCondition = 'estimate';
arx30 = @(z)ar(dataTrain,[30], Opt)
z = Y(end)
frcast = arx30(z)
The result after compiling code is above without caculating z in it
0 commentaires
Réponses (1)
Ishu
le 5 Mai 2024
Modifié(e) : Ishu
le 5 Mai 2024
Hi Arash,
I understand that your "dataTrain" expression contains a symbolic variable "z" which you want to replace it with some numeric value. As "dataTrain" is not a function of "z", its just an expression containing symbol "z".
The function handle "arx30 = @(z)ar(dataTrain,[30], Opt)" creates an anonymous function "arx30" that, when called, should execute "ar(dataTrain,[30], Opt)". Importantly, this captures the current value of dataTrain, which is the symbolic expression with "z". It does not create a dynamic link back to the symbolic variable "z".
When you assign z = Y(end);, you are overwriting the symbolic "z" with a numeric value. This does not retroactively change "dataTrain" or affect the function handle "arx30", because "dataTrain" was already defined in terms of the symbolic "z", and "arx30" captured "dataTrain's" symbolic form.
Calling "arx30" after "z" has been set to Y(end) does not substitute z into the original symbolic expression within "dataTrain". The function "ar" is called with the original symbolic expression, not with "z" substituted as Y(end), resulting in a symbolic output rather than a numeric one.
In order to substitute "z" with a numeric value and then compute the "arx30", you need to ensure that the substitution happens before or within the function call. Here's a way to achieve this by making "dataTrain" as a function of "z":
function y = ar(dataTrain,z)
y = dataTrain(z) + 30;
end
syms z;
dataTrain = @(z) z + z^2 + 2*z; % Assuming value to be z+z^2+2*z
arx30 = @(z)ar(dataTrain, z);
z = 4; % taken some random value as i dont have Y(end)
frcast = arx30(z)
0 commentaires
Voir également
Catégories
En savoir plus sur Symbolic Math Toolbox dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!