function slope ??? Undefined function or method

11 views (last 30 days)
Nawawit
Nawawit on 30 Apr 2013
Commented: Walter Roberson on 13 Feb 2021
??? Undefined function or method 'slope' for input arguments of type 'double'.
the code is
decay(j-2,j9)=mean (slope(1:j5-1,j1));
how can i plot slope but my matlab don't have slope function
help me plz

Answers (4)

Wayne King
Wayne King on 30 Apr 2013
slope() is not a Mathworks function, but you can use polyfit() to fit a first-order polynomial to some data and get the slope by extracting the coefficient corresponding to the first power.
x = 0:20;
y = 2*x+0.01*randn(size(x));
coefs = polyfit(x,y,1);
The estimated slope is coefs(1)

Jan
Jan on 30 Apr 2013
So what kind of help do you expect? My Matlab does not have a slope function also. It is also not clear, what this function should calculate. When it is the slope, what do you expect as output for "1:j5.1"? Obviously this is a constant and trivial to calculate.
Perhaps gradient helps already.

Nawawit
Nawawit on 30 Apr 2013
[fname,pname] = uigetfile('*.lvm');
rawdata=load (fname);
for j1=1:length(rawdata)/31;
time(j1,1)=(rawdata(31*j1,2)-rawdata(31,2))/1000;
for j2=1:30;
thirdoctave(j1,j2)=rawdata((j1-1)*31+j2,2);
end
end
[maxdb,idb]=max(thirdoctave);
for j=3:8;
j1=j*3;
j2=idb(j1);
j3=1;
flag=0;
j5=1;
end
while flag==0;
if j3>3 & j2+1<=length(thirdoctave) & thirdoctave(j2+1,j1)>thirdoctave(j2,j1)
flag=1;
else if j2 == length(time);
flag=1;
else
cropdata(j3,:,j1)=[time(j2),thirdoctave(j2,j1)];
if j3>1;
for j4=1:j3-1
slope(j5,j1)=(cropdata(j3,2,j1)-cropdata(j3-j4,2,j1))/(cropdata(j3,1,j1)-cropdata(j3-j4,1,j1));
j5=j5+1;
end
end
j2=j2+1;
j3=j3+1;
end
end
decay(j-2,j2)=mean(slope(1:j5-1,j1));
end
freqs=[20;25;31.5;40;50;63;80;100;125;160;200;250;315;400;500;630;800;1000;1250;1600;2000;2500;3150;4000;5000;6300;8000;10000;12500;16000];
freqcrop=[125;250;500;1000;2000;4000];
reverb=-60./decay;
this code matlab
and data file in .lvm it example data
i want measured reverberation time(RT60) use in labview and calculate in matlab
** i calculate code matlab error
  1 Comment
Walter Roberson
Walter Roberson on 13 Feb 2021
the problem is not a missing function slope. The problem is that
if j3>1;
for j4=1:j3-1
slope(j5,j1)=(cropdata(j3,2,j1)-cropdata(j3-j4,2,j1))/(cropdata(j3,1,j1)-cropdata(j3-j4,1,j1));
j5=j5+1;
end
is never true so that you never assign to the variable named slope

Sign in to comment.


Yash Chordia
Yash Chordia on 12 Feb 2021
Edited: Yash Chordia on 12 Feb 2021
You can brute force it by the actual formula of slope ---> f(x +Δx) - f(x) / Δx
%slope
for count = 1:length(y)-1
v(count) = (y(count + 1) - y(count))/(t(count + 1) - t(count));
end
%v has one less element than y so, correcting it
v(length(y)) = v(length(y)-1)
you can adjust the code accordig to your requiremnt. Here we are calculating slope of y

Tags

Community Treasure Hunt

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

Start Hunting!