How to multiply each value of a matrix by a number
Mostrar comentarios más antiguos
Hello, Right now I am getting a matrix at the end but all the values in each row are the same. Im not sure why this is happening. My results matrix is right but the unhedged and hedged are doing this error.
k_g = [0.66, 0.65, 0.64, 0.63, 0.62, 0.61, 0.60, 0.59, 0.55];
c_g = [0.085855 0.032191 0.020795 0.017001 0.013711 0.010851 0.008388 0.006291 0.001401];
k_b = [1.30, 1.25, 1.20, 1.15, 1.10, 1.05, 1.00, 0.95, 0.90];
c_b = [0.137213 0.082645 0.045060 0.028338 0.016146 0.007860 0.003277 0.001134 0.000245];
results_G = zeros(length(k_g), length(c_g));
results_B = zeros(length(k_b), length(c_b));
unhedged_G = zeros(length(k_g), length(c_g));
unhedged_B = zeros(length(k_b), length(c_b));
Eg = 643000000;
Eb = 272000000;
corr = 0.675;
n = 100000;
Rg = normrnd(0,9,[n,1]);
Rb = normrnd(0,11,[n,1]);
for j = 1:length(c_g)
for i = 1:length(k_g)
G = 0.6531*(1+Rg(i)/100);
netpayoff_g = (k_g(i)-G)-c_g(j);
results_G(i,j)= netpayoff_g;
unhedged_G(i,j)=Eg.*G;
end
j=j+1;
end
for b = 1:length(c_b)
for a = 1:length(k_b)
B = 1.234*(1+Rb(a)/100);
netpayoff_b = (k_b(a)-B)-c_b(b);
results_B(a,b)= netpayoff_b;
unhedged_B(a,b)= Eb.*B;
end
b=b+1;
end
hedged_G = unhedged_G + (9.*results_G)
hedged_B = unhedged_B + (9.*results_B)
hedged = hedged_G + hedged_B
results_G
results_B
best_G = max(results_G(:))
best_B = max(results_B(:))
3 comentarios
jessupj
el 16 de Sept. de 2020
i think new versions of matlab don't complain about dimension mismatch when you add a row vector and a column vector, returning a matrix
e.g.
>> [1 1 1] + [1 2 3]'
ans =
2 2 2
3 3 3
4 4 4
try something like
unhedged_G(:) + (9*results_G(:))
to force both addends into row vectors
Dylan Springer
el 16 de Sept. de 2020
jessupj
el 16 de Sept. de 2020
it might simply LOOK like the numbers are the same because Eg and Eb are large and the answer is displayed in scientific notation. try looking at the results after you run
format long g
Respuestas (1)
Sai Sri Pathuri
el 22 de Sept. de 2020
You may try the following:
Create Rg and Rb as matrices with same length as results matrices
Rg = normrnd(0,9,[length(k_g), length(c_g)]);
Rb = normrnd(0,11,[length(k_b), length(c_b)]);
For the calculation of unhedged_G, define G as
G = 0.6531*(1+Rg(i,j)/100);
For the calculation of unhedged_B, define B as
B = 1.234*(1+Rb(a,b)/100);
Categorías
Más información sobre Resizing and Reshaping Matrices en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!