我有一组数据,在绘制时,看起来像这样.
我需要使用该polyfit
命令来确定大致在1.7
和之间的时间的最佳拟合指数2.3
.我还必须将这种指数拟合与简单的线性拟合进行比较.
我给出了等式Temp(t) = Temp0 * exp(-(t-t0)/tau)
,其中t0
是与温度相对应的时间Temp0
(我可以选择从哪里开始曲线拟合,但它必须限制在大约介于1.7和2.3之间的区域).这是我的尝试.
% Arbitrarily defined starting point
t0 = 1.71;
%Exponential fit
p = polyfit(time, log(Temp), 1)
tau = -1./p(1)
Temp0 = exp(p(2))
tm = 1.8:0.01:2.3;
Temp_t = Temp0*exp(-(tm)/tau);
plot(time, Temp, tm, Temp_t)
figure(2)
%Linear fit
p2 = polyfit(time, Temp, 1);
Temp_p = p2(1)*tm + p2(2);
plot(time, Temp, tm, Temp_p)
Run Code Online (Sandbox Code Playgroud)
我的指数最终看起来像 .我的线性拟合看起来像
.(几乎相同).我做错了什么?两者是否应该如此相似?我被告知
circshift
可能有所帮助,但在阅读帮助文件后我无法掌握命令的适用性.
我在MATLAB中导入了一组图像,并将它们转换为灰度图像.我现在必须创建一个图像堆栈,"灰度图像的3D矩阵".在此之后,我必须通过采用"图像堆栈的每一层的双重均值"来创建一维图像强度阵列.这是我到目前为止的代码(我只导入了几张图片):
for i=139:141
string2 = num2str(i);
% Concatenate several strings, produce file name
str = [string, string2, string3];
% Read image
a = imread(str);
% Get image dimensions
size(a)
% Convert to grayscale
b = rgb2gray(a);
Run Code Online (Sandbox Code Playgroud)
'size(a)'产量'1728 x 2592 x 3'.这适用于所有图像.我想知道如何创建灰度图像的3D矩阵,我想知道如何创建上面提到的一维图像阵列.我假设,也许是错误的,"双重均值"的意思
mean(mean(...)).
Run Code Online (Sandbox Code Playgroud)
对于3D矩阵,我有
% Pre-allocate 3D matrix
ImStack = zeros(1728, 2592, 3, class(b));
% Add images to ImStack
ImStack(:,:,1) = b;
Run Code Online (Sandbox Code Playgroud)
这是我在MathWorks帮助论坛上找到的模板,
b =零(2000,2000,number_of_images,class(a));
b(:,:,1)= a;
但是,我不确定如何继续创建一维图像强度阵列.非常感谢您的建议.谢谢.