联调 matlab 遇到的一些事儿

记录当时遇到的问题,因为平时不写 matlab,所以没有深入的理解。

版本兼容

当时遇到的第一个问题就是不同版本 matlab 带来的兼容性问题。同时开发使用的是 2021a 版本,而调试时使用的是 2022b 版本。在新版本中某些函数已被弃用,导致程序运行失败。

因此,在一个团队内部,应该使用统一的 matlab 版本,同时要在程序中严格声明适用的版本。

可以尝试通过以下方式,检查兼容性,提升兼容性:

  1. codeCompatibilityReport 代码兼容性报告)通过这个函数可以查看项目代码的兼容性。
  2. MATLAB 代码兼容性分析器
  3. 升级工程

网络操作

websave、webwrite、webread

通过 RESTFul API 读写数据。也可以适用 webread get 网络数据

websave 可以通过 get 方法获取数据,并存储到指定的文件中。

matlab 复制代码
% http 客户端
% 需要注意的是,resulttemp 不用转为字符串,工具自己会根据 Content-Type 自动处理传入的 data 数据

import matlab.net.http.*
import matlab.net.http.field.*

resulttemp = containers.Map();
resulttemp("topic") = topic;
resulttemp("key") = key;
resulttemp("msg") = msg;

uri = matlab.net.URI("http://10.3.63.38:9100/mq/");
headers = HeaderField("Content-Type","application/json");
req = RequestMessage(RequestMethod.POST, headers, resulttemp);
req.send(uri);
matlab 复制代码
% 适用 form-data 上传文件。
% matlab 提供了其他不同的 Provider 满足业务需求,可以自行探索
fps = matlab.net.http.io.FileProvider("aa.zip");
formProvider = matlab.net.http.io.MultipartFormProvider("ext", "zip", "file",fps);
req = matlab.net.http.RequestMessage('post',[],formProvider);
uri = matlab.net.URI('http://10.3.63.38:9004/stash/upload');
result = req.send(uri);  

写文件

matlab 复制代码
% 通用函数,可以将字节,字符串等数据直接写入到文件
x = 0:.1:1;
A = [x; exp(x)];

fileID = fopen('exp.txt','w');
fprintf(fileID,'%6s %12s\n','x','exp(x)');
fprintf(fileID,'%6.2f %12.8f\n',A);
fclose(fileID);

writetablewritematrixwritecell 可以将对应数据类型的数据写入文件,文件格式支持 .txt、.dat、csv、.xls 等。详见官方文档。

xlswrite 在高版本中已经弃用,在项目中不建议适用。

相关推荐
金金计较.13 分钟前
Go语言-3
java·开发语言·golang
张小凡vip1 小时前
python--爬虫--经验积累的遇到的坑
开发语言·爬虫·python
Wang's Blog2 小时前
Java框架快速入门: Spring Security+OAuth2之云服务集成与多因子认证设计
java·开发语言·spring
门思科技2 小时前
LoRaWAN 网络容量估算:一个 SX1302 网关到底能带多少设备
开发语言·网络·php
大草原的小灰灰2 小时前
Python基础语法
开发语言·python
泡泡鱼(敲代码中)4 小时前
MySQL基础学习笔记:从数据模型到DDL全掌握
开发语言·数据库·笔记·学习·mysql
潜创微科技5 小时前
IT6520:USB-C 转 MIPI 高集成控制器,DP 1.4a 转 MIPI 单芯片搞定 4K120 显示
c语言·开发语言·低延迟·掌机·联阳
Escalating_xu5 小时前
【System V 信号量】从 P/V 原语到 Builder 封装:写出可控、可清理的进程互斥组件
java·linux·开发语言·jvm
傲世仙尊6 小时前
System V 进程间通信详解:共享内存、消息队列与信号量(CSDN博客)
linux·开发语言·c++
cvby6 小时前
C++11
开发语言·c++