Error creating matrix using a integer and vector in Matlab

1 vue (au cours des 30 derniers jours)
Syed Masoom
Syed Masoom le 15 Sep 2020
Modifié(e) : Steven Lord le 16 Sep 2020
I'm having trouble understanding why I can''t declare a matrix by using the following declaration A = [1 x x.^2 x.^3]; where x is from a column vector of 1x50 double

Réponse acceptée

madhan ravi
madhan ravi le 15 Sep 2020
Modifié(e) : madhan ravi le 15 Sep 2020
A = x(:) .^ (0:3)
  6 commentaires
madhan ravi
madhan ravi le 15 Sep 2020
A = x(:) .^ (0:3)
Syed Masoom
Syed Masoom le 15 Sep 2020
thank you, could you post that as your answer so i can accept it?

Connectez-vous pour commenter.

Plus de réponses (1)

Steven Lord
Steven Lord le 16 Sep 2020
Modifié(e) : Steven Lord le 16 Sep 2020
madhan ravi has told you how to do this but I want to explain why your original approach didn't work.
If x is a column vector with 50 elements it has 50 rows (if it were a 1x50 array it would be a row vector.) The number 1 has 1 row. You can't horizontally concatenate an array with one row and an array with 50 rows and have them form a rectangular array as you can see here:
bar([1 2], [1 50])
You could make that 1 an array with the same number of rows as x:
x = (1:10).';
A1 = [ones(size(x)), x, x.^2, x.^3];
Though I'd probably reverse the order of the columns to match the convention of functions like polyfit and polyval.
A2 = x.^(3:-1:0)

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by