MATLAB saying not enough input arguments.

1 Ansicht (letzte 30 Tage)
Ryan
Ryan am 18 Feb. 2014
Kommentiert: Image Analyst am 18 Feb. 2014
I am probably missing something completely obvious because I am very new to matlab.
function y = myrowproduct(A, x)
%This function computes the pro
%duct of matrix A by
%vector x row-wise
% define m number of rows here to feed into for loop
[ma,na] = size(A);
[mx,nx] = size(x);
% use if statement to check for proper dimensions
if(na == mx & nx == 1)
y = zeros(ma,1); % initialize y vector for n = 1:ma
y(n) = A(n,:)*x;
else
disp('Dimensions of matrices do not match')
y = [];
end
end

Antworten (2)

Image Analyst
Image Analyst am 18 Feb. 2014
Use double &
if (na == mx && nx == 1)
  2 Kommentare
Ryan
Ryan am 18 Feb. 2014
Ok, I did that. I am getting.
Error in mfile (line 11)
y(n) = A(n,:)*x;
Image Analyst
Image Analyst am 18 Feb. 2014
You need
y(n) = A(n,:) .* x';
to multiply the column elements of row n in y by the row elements in the column vector x.

Melden Sie sich an, um zu kommentieren.


Star Strider
Star Strider am 18 Feb. 2014
Your value of n is undefined. Not to spoil your fun in troubleshooting your code, but you need a for loop:
A = rand(4);
x = rand(4,1);
na = size(A,1);
for n = 1:na
y(n,:) = A(n,:)*x;
end
Adding the colon in the subscript ( y(n,:) = ... ) forces it to be a column vector, as it should be.
Check your code. Right now, you will only get an empty matrix for y.

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by