I am struggling with letter b and keep getting this as an error. Variable b must be of size [1 1]. It is currently of size [3 4]. Check where the variable is assigned a value.

34 vues (au cours des 30 derniers jours)
Consider the array (row vector), matrix, and column vector below.
A = [11.3 25.4 -58.6 66.2 82.8 37.9 41.5 3.6 60.7 14.2]
B = [1.256 3.135 5.489 7.236; 8.457 2.236 -4.456 6.128; 0.236 7.458 8.569 9.745]
C = [2.23; 3.58; -5.69; 7.47; 8.23; 5.46; 0.19; -9.73; 1.28; 4.46]
a) Sort A in ascending order and then calculate log base 10 of each element.
b) Calculate log base 10 of each element in B and then find the maximum value for the entire matrix.
c) Round all values down and then calculate log base 10 of each element in C.
here is my code:
A = [11.3 25.4 -58.6 66.2 82.8 37.9 41.5 3.6 60.7 14.2]
B = [1.256 3.135 5.489 7.236; 8.457 2.236 -4.456 6.128; 0.236 7.458 8.569 9.745]
C = [2.23; 3.58; -5.69; 7.47; 8.23; 5.46; 1.19; -9.73; 1.28; 4.46]
% a) Sort A in ascending order and then calculate log base 10 of each element.
A = sort(A)
a = log10(A)
% b) Calculate log base 10 of each element in B and then find the maximum value.
b = log10(B)
B = max(B,[],'all')
% c) Round all values down and then calculate log base 10 of each element in C.
C = floor(C)
c = log10(C)

Réponse acceptée

Jasvin
Jasvin le 9 Fév 2023
Hi Monique,
You just have to reassign the output to b instead of B as you are doing in this case.
Also, here’s another way you can accomplish the same thing in one line,
b = max(max(log10(B)));

Plus de réponses (3)

Dyuman Joshi
Dyuman Joshi le 9 Fév 2023
Variable b has been used to store the log10 values of B matrix and it has not been updated afterwards, You have used B instead b
%In this line of code
B = max(B,[],'all')
There are some negative elements in B (and A and C as well) and by definition the input to log should be a positive value. I would suggest you to clarify from your instructor what is to be done, but the function log() accepts negative values as well
B = [1.256 3.135 5.489 7.236; 8.457 2.236 -4.456 6.128; 0.236 7.458 8.569 9.745];
logB = log10(B);
b = max(logB,[],'all')
b = 0.6489 + 1.3644i

Sulaymon Eshkabilov
Sulaymon Eshkabilov le 9 Fév 2023
One typo B instead of b in computing max of log10(B):
A = [11.3 25.4 -58.6 66.2 82.8 37.9 41.5 3.6 60.7 14.2];
B = [1.256 3.135 5.489 7.236; 8.457 2.236 -4.456 6.128; 0.236 7.458 8.569 9.745];
C = [2.23; 3.58; -5.69; 7.47; 8.23; 5.46; 0.19; -9.73; 1.28; 4.46];
% a) Sort A in ascending order and then calculate log base 10 of each element.
A = sort(A)
A = 1×10
-58.6000 3.6000 11.3000 14.2000 25.4000 37.9000 41.5000 60.7000 66.2000 82.8000
a = log10(A)
a =
1.7679 + 1.3644i 0.5563 + 0.0000i 1.0531 + 0.0000i 1.1523 + 0.0000i 1.4048 + 0.0000i 1.5786 + 0.0000i 1.6180 + 0.0000i 1.7832 + 0.0000i 1.8209 + 0.0000i 1.9180 + 0.0000i
% b) Calculate log base 10 of each element in B and then find the maximum value.
b = log10(B)
b =
0.0990 + 0.0000i 0.4962 + 0.0000i 0.7395 + 0.0000i 0.8595 + 0.0000i 0.9272 + 0.0000i 0.3495 + 0.0000i 0.6489 + 1.3644i 0.7873 + 0.0000i -0.6271 + 0.0000i 0.8726 + 0.0000i 0.9329 + 0.0000i 0.9888 + 0.0000i
B = max(b,[],'all')
B = 0.6489 + 1.3644i
% c) Round all values down and then calculate log base 10 of each element in C.
C = floor(C)
C = 10×1
2 3 -6 7 8 5 0 -10 1 4
c = log10(C)
c =
0.3010 + 0.0000i 0.4771 + 0.0000i 0.7782 + 1.3644i 0.8451 + 0.0000i 0.9031 + 0.0000i 0.6990 + 0.0000i -Inf + 0.0000i 1.0000 + 1.3644i 0.0000 + 0.0000i 0.6021 + 0.0000i

Sarthak
Sarthak le 9 Fév 2023
According to the question (b) part, you need to find log10 of all the elements in the matrix. Since the size of B is [3 4], when you apply log10(B) and save it in variable b, the size of b will eventually be [3 4] only. The maximum element out of b will have a size of [1 1] or we can say it will be a scalar.

Catégories

En savoir plus sur Matrix Decomposition 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!

Translated by