Matlab error "Matrix dimensions must agree"

2 views (last 30 days)
I'm trying to get the integral() of a two functions but I keep getting this error and I don't know why
This is the code for the functions:
R = 0.5; %m
I = 2; %A
u0 = 4*pi*10^-7;
BiotSavart = (u0*R*I)/(4*pi);
max = 50;
px = -R:R/max:R;
py = -R:R/max:R;
pz = 0:R/max:2*R;
fy = @(t) sin(t)./((px-R*cos(t)).^2+(py-R*sin(t)).^2+pz.^2).^(3/2);
fz = @(t) (R-py.*sin(t)-px.*cos(t))./((px-R*cos(t)).^2+(py-R*sin(t)).^2+pz.^2).^(3/2);
By = pz * BiotSavart * integral(fy,0,2*pi);
Bz = BiotSavart * integral(fz,0,2*pi);
I get the error in this line:
fy = @(t) sin(t)./((px-R*cos(t)).^2+(py-R*sin(t)).^2+pz.^2).^(3/2);

Accepted Answer

Star Strider
Star Strider on 28 May 2020
Integrating an array, set 'ArrayValued' to 'true':
By = pz .* BiotSavart .* integral(fy,0,2*pi, 'ArrayValued',1);
Bz = BiotSavart * integral(fz,0,2*pi, 'ArrayValued',1);
That runs without error.

More Answers (1)

Clemens Dierks
Clemens Dierks on 5 Nov 2020
Hello everybody,
I have the same error in a different situation.
I wrote the function to save two variables (matrices) in a xlsx file within two sheets.
Because xlswrite seems to be deprecated I used 'writematrix'.
A is 9000x2 matrix.
B is 1x1 vector.
The error occurs in when calling the method "writematrix".
Thank you in advance! :)
This is my code:
function [] = save_data(filename, A, B)
save(filename,'solution','DBC10');
writematrix(A, strcat(filename+'.xlsx'), 'sheet', 1)
writecell(B, strcat(filename+'.xlsx'),'sheet', 2)
end

Categories

Find more on Shifting and Sorting Matrices in Help Center and File Exchange

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!