MATLAB Answers

Error using varfun function. "Matrix dimensions must agree."

조회 수: 1(최근 30일)
Hello guys,
I am trying to do the following operation:
I want to multiply a table of 52824x9, named X, by the first column of a table of 9x4. The table's name is coef, the first column variable name is Estimate. Therefore I would like to do something like this:
I am using the varfun function in the following way:
yPred=varfun(@(x) x.*coef.Estimate,X);
However, I am getting the following message:
Error using tabular/varfun>dfltErrHandler (line 433)
Applying the function '@(x)x.*coef.Estimate' to the variable 'VarName3' generated the following error:
Matrix dimensions must agree.
As I understand, I am multiplying 52824x9*9x1, so I don't know where my mistake is.
If anyone knows how to solve this, or could provide any solution it would be very much appreciated.
Many thanks,

  댓글 수: 2

the cyclist
the cyclist 19 Mar 2020
Can you upload the data (or a small representative sample that exhibits the same error), in a MAT file, using the paper clip icon?
I just uploaded it.

댓글을 달려면 로그인하십시오.

채택된 답변

Guillaume 19 Mar 2020
Several points:
  • "As I understand, I am multiplying 52824x9*9x1" No, you're using .*, the memberwise multiplication, not * the matrix multiplication. With .* the matrices must have the same size in all dimensions unless or one of them must be scalar in the mismatched dimensions.
  • "I want to multiply a table of 52824x9". Multiplication on tables are not defined. You could transform a table as long as all the variables are numeric matrices and multiply that but you cannot multiply tables. Typically tables contain heterogeneous data so multiplication wouldn't make sense.
  • varfun applies the given function to each variable of the table in turn. So the x that your function receives will be 52824x1. I don't think you want to use varfun.
  • The variables of your tables are day, month, period, holiday (which is just a 0/1 flag), etc. Does it even make sense to multiply variables like day or month, by your coeff variables?
  • It looks like you're trying to do a linear fit. Can you even do a linear fit when one of your variable is a 0/1 flag?

  댓글 수: 3

First of all, thanks for your answer. I know the result of the linear regression does not make sense in terms of adding the variables in the example that I am using, I just wanted to train a little bit in using matlab and some of its functions. I don't have much practice and I am trying to improve, knowing that the results won't be of use.
Following your comments, could you please tell me what should I do in order to get the variables of the table multiplied by the coefficients, even if the result doesn't make sense?
Many thanks,
Guillaume 19 Mar 2020
data{:,:} * coeff{:,:}
table2array(data) * table2array(coeff)
would multiply the content of both tables.
Many thanks, this is what I was looking for.

댓글을 달려면 로그인하십시오.

추가 답변(0개)

Community Treasure Hunt

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

Start Hunting!

Translated by