100X.dll + VB 测试文档

0 篇文章 0 订阅

定义一个函数,该函数分析图像中精子细胞的形态。我将该函数封装成dll,以便完成VB对VC的调用。

程序定义3个20*1000的数组edge1~3,分别存放每个细胞的整体边界坐标、头部边界坐标和顶体边界坐标,行表示细胞的标号。8个20的数组,存放每个细胞的信息。

问题1:对图片1.bmp进行处理的时候,出现


三个数组只有一个长度正确,且该数组中只有第一行有数据,其余行数据全为0.其余一维数组中只有最后一个长度正确,且有三个数据。

edge1说明只识别出1个细胞,但diffangele说明有三个细胞角度差,实际上,图像中有3个细胞。



问题2:对图片2.bmp进行处理


如图可知,图像中有四个细胞,此处7个一维数组里都显示出4个细胞的信息,但是二维边界数组只有第一个edge1有数据,且只有一个细胞的数据,tailwidth没信息。

除此之外,运行到该函数时,出现问题:

尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

单步也可以运行下去。


问题3:对4.bmp进行处理

问题4:对于6.bmp,有两个细胞,所有数组长度正确,一维数组里皆有两个细胞的信息,但是二维边界数据里确只有一个细胞的信息。

总之,所有的边界数组1,只有一个细胞的信息。

和项目负责人一起研究了下,是边界数组定义的长度小了,真是要笑死了,这个错误犯得,唉,又给自己上了一课。写程序一定要仔细。

要计算多项式 Pn(x) 的值,我们可以使用霍纳法则(Horner's method),这种方法比直接展开多项式然后计算要高效。以下是使用霍纳法则的Matlab代码示例: ```matlab function Pn = hornerPoly(a, x) Pn = a(end); % 初始化为a的最后一个元素 for i = length(a)-1:-1:1 Pn = a(i) + x * Pn; % 逐步构建多项式值 end end ``` 为了比较向量和矩阵作用幂次的效率,我们需要定义一个函数来分别对向量和矩阵进行操作,并计算它们的执行时间。我们可以使用`tic`和`toc`来测量时间,以及使用`plot`来绘制结果。 下面的Matlab代码将会执行这些任务: ```matlab function compareEfficiency(n) % 生成a向量和x的值 a = [0:n]; % 生成i+1 x_vec = linspace(-5, 5, 1000); % 生成一个向量 X_mat = rand(100, 100); % 生成一个100x100的矩阵 % 计算向量x的多项式值 tic Pn_vec = hornerPoly(a, x_vec); time_vec = toc; % 计算矩阵X的多项式值 tic Pn_mat = arrayfun(@(x) hornerPoly(a, x), X_mat); time_mat = toc; % 绘制效率比较图 figure; plot(x_vec, Pn_vec); % 绘制向量x的结果 hold on; mesh(X_mat); % 绘制矩阵X的结果 hold off; title(['效率比较 n = ' num2str(n)]); xlabel('x'); ylabel('Pn(x)'); legend('向量x', '矩阵X'); % 输出时间结果 fprintf('向量x计算时间为:%f 秒\n', time_vec); fprintf('矩阵X计算时间为:%f 秒\n', time_mat); end ``` 使用这个函数,你可以比较不同大小的`n`对于向量`x`和矩阵`X`计算多项式值的效率差异。请注意,你需要在一个脚本或命令窗口中调用`compareEfficiency`函数,并为不同的`n`值重复这个过程以收集数据,最后绘制出图表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值