How to fix broken function code?

2 views (last 30 days)
Jenni
Jenni on 7 Feb 2024
Commented: Jenni on 7 Feb 2024
Hey! Here is my function and I am trying to estimate the values of b_1 and b_0, but when I am running my code, I get following messages:
"Error using/
Matrix dimensions must agree."
"Error in function sovittaja (line 5):
s_2 = sum((x.*y)/(delta_y.^2));"
"Error in (line 16):
sovittaja(f,v,delta_v).
Here is my function code called "sovittaja":
function [b, bci] = sovittaja(x,y,delta_y)
%%Helper variables:
s_1 = sum(1./(delta_y.^2));
s_2 = sum((x.*y)/(delta_y.^2));
s_3 = sum(x./(delta_y.^2));
s_4 = sum(y./(delta_y.^2));
s_5 = sum(x.^2/(delta_y.^2));
%%Defining D:
D = (s_1*s_5)-(s_3)^2;
%%Analyyttiset lausekkeet:
b_1 = (1/D)*((s_1)*(s_2)-(s_3)*(s_4));
b_0 = (1/D)*((s_5)*(s_4)-(s_3)*(s_2));
%%Margin of errors:
delta_b_1 = sqrt((1/D)*(s_1));
delta_b_0 = sqrt((1/D)*(s_5));
%%Indexs of matrix bci :
bci_11 = b_0 - delta_b_0;
bci_12 = b_1 - delta_b_1;
bci_21 = b_0 + delta_b_0;
bci_22 = b_1 + delta_b_1;
%% Return values:
b = [b_0, b_1];
bci = [bci_11,bci_12;bci_21,bci_22];
And here is what I want to do with the function "sovittaja":
clear all
close all
% Measurement:
i=[1,2,3,4,5]';
% Frequency:
x=[519,549,688,740,821]';
% Voltage:
y=[1.0,1.2,1.9,2.4,2.3]';
% Margin of Error:
delta_y=[0.15,0.40,0.20,0.30,0.10];
sovittaja(x,y,delta_y)
What should I do to make the code work? And how could I plot these?
Thank you for the help!

Accepted Answer

Stephen23
Stephen23 on 7 Feb 2024
Edited: Stephen23 on 7 Feb 2024
Use array division here:
s_2 = sum((x.*y)./(delta_y.^2));
% ^^
and here:
s_5 = sum(x.^2./(delta_y.^2));
% ^^
and possibly in some other locations: check all division and power operations!
Learn the difference:
As a rule of thumb: if you are not doing linear algebra then use array operations.

More Answers (0)

Categories

Find more on EEG/MEG/ECoG in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!