在 WSL2 Ubuntu20.4 系统中安装 Baltamatica 显示成功, 准备运行时出现 Inconsistency detected by ld.so: dl-call-libc-early-init.c: 37: _dl_call_libc_early_init: Assertion `sym != NULL' failed! 错误.
请问这该怎么处理?谢谢!
写了一个自适应 Simpson 求积公式的代码, 运行过程中出现了 abs命令或者变量的类型发生变化导致,无法求值 的错误, 如图所示
我写的 adapsimp 的代码如下
function [s, err] = adapsimp(func, a, b, tol) s = comsimp(func, a, b, 2); c = (a + b) / 2; s1 = comsimp(func, a, c, 2); s2 = comsimp(func, c, b, 2); s12 = s1 + s2; err = abs(s12 - s) / 15; if err < tol s = s12; else [s1, err1] = adapsimp(func, a, c, tol/2); [s2, err2] = adapsimp(func, c, b, tol/2); s = s1 + s2; err = err1 + err2; end end
里面用到了 comsimp 函数, 是这样写的
function s = comsimp(func, a, b, n) h = (b - a) / n; s0 = func(a) + func(b); s1 = 0; % summation of f(x_{2k-1}) s2 = 0; % summation of f(x_{2k}) for k = 1:n-1 x = a + k * h; if rem(k , 2) == 0 s2 = s2 + func(x); else s1 = s1 + func(x); end end s = h * (s0 + 4 * s1 + 2 * s2) / 3; end
这部分代码在 octave 上运行是没有问题的
用的版本是2.2.0最新版的.
使用 disp 函数给输出增加说明的时候, 出现了顺序上的错误. 比如使用下面一段代码
for n = 1:3 disp("n 的值为") n end
正常输出应该是一句 "n 的值为" 和 n 的具体值交替输出
但现在是先将n的值都输出完了, 才输出的disp语句里面的内容
使用的是 Deepin 操作系统, 版本为 2.1.1. 好像 Deepin 的安装包还停留在 1 月份的没更新.
对于数量级极大的一组数据
x = 0:0.1:1; y = [2, -2, -6, -42, -1806, -3.26344e+06, -1.06501e+13, -1.13424e+26, -1.28649e+52, -1.65507e+104, -2.73925e+208];
只要使用 plot(x, y) 绘制图形, 软件便会自动退出. 对于其他正常的数据, 绘图时正常的.
使用的是 Deepin 操作系统, 版本为 2.1.1.
目前 Windows 平台下 3.0.1 版的软件是不可以在终端下使用而只能启动图形界面了吗?
使用 mesh 函数绘制曲面图形,报错提示错误使用 mesh 函数,Z 必须为矩阵,不能是标量或向量。
Deepin 系统版本为 2.1.1 上运行是没有问题的,但在 Windows 11 系统版本为 3.0.3 上运行会出现上述错误。
clear; clc; % 空间步长 h = 0.01; % 时间步长 tau = 0.01; x = 0:h:1; t = 0:tau:1; % 剖分网络 [X, T] = meshgrid(x, t); % 解析解 Ut = exp(-X+T); % 作图 mesh(x, t, Ut) title("扩散方程初边值问题的精确解") xlabel("x") ylabel("t")
另外,Deepin 的版本什么时候更新,半年前反馈的 Deepin 版本上的问题到现在还没有修正。
操作系统为 Deepin20.9, 版本为开发者预览版 Baltamatica_999-3.1.3-dev1.
在终端下启动北太天元并使用绘图函数会自动退出程序,提示需要先创建一个 QApplication 应用。
使用 symbolic 插件提供的 sym 命令创建符号变量 x 后,工作区不显示任何变量信息
使用 whos 命令查看发现只有 ans 这个变量,且类型识别为 extern. 将这个 ans 赋值给 x 之后,无论参与运算工作区都是不显示任何信息的,也就是工作区无法识别 extern 这种类型的变量。
目前将所有公布过的正式版本都安装尝试了一遍,都是这种情况。
操作系统为 Deepin20.9, 安装的版本为 baltamatica_999_3.5.0_dev0
绘制一个周期的正弦曲线, 得到的图如下, 坐标轴上标记的点已经超出了图像的大小.
操作系统是 Deepin V23, 输入法使用的是 fcitx5. 从 3.5.0-dev1 开始试验, 到最新的 3.6.1-dev1, 使用通用版的 Linux 安装包安装后, 均无法在编辑器中切换中文输入法输入中文.
3.1.3-dev1_Deepin20.9 在 Deepin V23 上安装能够正常切换中英文.
IQA 插件默认使用的是 qwen2.5 模型,每次重新启动软件都需要重新使用 AIInit 初始化一下其他本地模型。建议增加修改默认模型的功能。
首先生成一个测试文件,第一行类似于表头,2到4行每行存储3个数,用tab键分隔
fwid = fopen("test.txt", "w"); fprintf(fwid, "%s\t%s\t%s\n", "column_1", "column_1", "column_3"); fprintf(fwid, "%d\t%d\t%d\n", 1, 2, 3); fprintf(fwid, "%d\t%d\t%d\n", 4, 5, 6); fprintf(fwid, "%d\t%d\t%d\n", 7, 8, 9); fclose(fwid);
得到的文件共5行,第5行是一空行。下面以 fgetl 函数逐行读取该文件。
方法一:
以 feof 函数作为 while 循环的判断条件,依次读取文件的每一行并显示出来
frid = fopen("test.txt", "r"); fgetl(frid); % 是否到达文件末尾 (EOF) while ~feof(frid) line = fgetl(frid); disp(line); end fclose(frid);
该方法在北太天元中除了显示文件中的3行数字,还会显示一个-1,这个-1是fgetl判断到文件末尾后返回的。而在 MATLAB 中只显示 3 行数字。
方法二:
考虑到方法一中 fgetl 函数返回了 -1 但 feof 条件没有起作用,将 while 循环条件改为 true,循环内部满足 feof 条件 break 循环。
frid = fopen("test.txt", "r"); fgetl(frid); while true line = fgetl(frid); % 如果到达文件末尾,则退出循环 if feof(frid) break; end disp(line); end fclose(frid);
该方法在北太天元中输出符合预期,但在 MATLAB 中只输出两行数据
也就是说,在北太天元中,读取了 7 8 9 三个数后,需要再读取一行才到末尾 (EOF),所以读取到的 -1 没有 disp;而在 MATLAB 中,读取了之后已经到末尾,虽然读取了这三个数,就跳出循环不再显示。代码中的 if 判断更换任意位置在北太天元中都将显示 -1。
验证:
手动逐行读取文件进行验证
frid = fopen("test.txt", "r"); fgetl(frid); disp(feof(frid)); fgetl(frid); disp(feof(frid)); fgetl(frid); disp(feof(frid)); fgetl(frid); disp(feof(frid)); fgetl(frid); disp(feof(frid)); fclose(frid);
在北太天元和 MATLAB 中输出的结果分别是
测试文件共 5 行,前四行有内容,第五行是空行,在 MATLAB 中,读取完第四行就判断为文件末尾,而在北太天元中,五行全部读完才判断是文件末尾。
无法读取保存polyshape数据类型的mat数据文件
t_start = datetime(2025, 5, 21, 21, 00, 00); t_end = t_start + hours(1); t_step = minutes(1); t_start:t_step:t_end
运行报错, 提示不支持冒号运算符
1. 首先,针对北太天元所使用的 Python,安装 pyttsx3 文本转语音引擎:
load_plugin("Python"); pipcmd("install pyttsx3 -i https://pypi.tuna.tsinghua.edu.cn/simple/");
2. 使用如下函数初始化一个基于 pyttsx3 的 TTS 引擎并设置其参数:
function [engine] = textToSpeech_pytts_init() % 获取 Python 根对象用于调用 Python 函数等 py = pyroot; % 导入 pyttsx3 模块 pyttsx3 = py.pyttsx3; % 初始化 TTS 引擎 engine = pyttsx3.init(); % 设置语音属性 (可选) voices = engine.getProperty('voices'); % voices 是一个 py.list 对象 % 目前北太天元无法直接使用 length 获取 py.list 的长度 % 只能暂时使用 Python 中的 len 来代替 for i = 1:py.len(voices) % 同样, 北太天元中的 frompy 函数无法将 py.list 类型的 voices 转化为内置的数组 % 所以只能通过 pygetitem 函数来获取每一个元素 voice = pygetitem(voices, i-1); if contains(string(voice.name), 'Chinese') % 查找支持中文的语音 engine.setProperty('voice', voice.id); break end if contains(string(voice.name), 'English') % 查找支持英文的语音 engine.setProperty('voice', voice.id); break; end end % 设置语速 (可选) engine.setProperty('rate', 150); % 默认值为 200 % 设置音量 (可选) engine.setProperty('volume', 0.8); % 范围是 0.0 到 1.0 end
3. 初始化引擎,并传给引擎文本,让引擎朗读,或者保存音频:
% 初始化 TTS 引擎 engine = textToSpeech_pytts_init(); % 设置要说的文本 text = "你好,我在北太天元中调用 Python 文本转语音引擎!"; engine.say(text); % 保存为 WAV 文件 engine.save_to_file(text, "output.wav"); % 运行并等待语音完成 engine.runAndWait(); engine.stop()
这样便可以听见引擎朗读的声音,也可以在本地找到保存的 output.wav 文件。
本示例中的 textToSpeech_pytts_init() 函数参考 大预言模型(LLM)赋能具身智能中的人机交互 中 Python 模型集成一节,并将无法在北太天元中运行的部分进行了修改。
本示例也参考了 Python使用总结之Python文本转语音引擎:pyttsx3完全指南 如何使用 pyttsx3 库。