发帖
日期

Windows中运行北太天元安装程序时,提示损坏的映像

Windows中运行北太天元安装程序时,出现下面的报错提示:baltamatica.exe-损坏的映像D:\baltamaticaVlib\iconv-2.dll没有被指定在 Windows 上运行,或者它包含错误。请尝试使用原始安装介质重新安装程序,或联系你的系统管理员或软件供应商以获取支持。错误状态0xc0e90002。原因:Windows智能应用控制阻止了安装程序的运行解决办法:设置->隐私和安全性->windows安全中心->应用和浏览器控制1. “智能应用控制”,点进去关闭2. “基于声誉的保护设置”->阻止可能不需要的应用,关闭

通过codegen生成代码后,运行程序提示运行时错误

通过codegen生成代码后,运行程序提示运行时错误:内建函数 [eq] 导入失败(可能函数名不存在)。位置:[file: C:\codegen\builds\builtin_import.cppp, line:979]0. main(...)1. sinc(...)示例问题代码:function y=sinc(x)    i = find(x==0);    x(i) = 1;    y = sin(pi*x)./(pi*x);    y(i) = 1;原因:入口函数的入参只能是字符串,而且需要在命令行调用时给出参数解决办法:1. 程序修正示例function y=sinc(a)    x=str2num(a);    i = find(x==0);    x(i) = 1;    y = sin(pi*x)./(pi*x);    y(i) = 1;2.运行时如果是双击bat文件执行的话,把参数仿bat文件里,就像这样

基于SVD的图像压缩演示程序,运行后图形显示不正常

% 基于SVD的图像压缩演示clear; clc; close all;%% 1. 读取并显示原始图像% 读取图像(请将 'your_image.jpg' 替换为你的图像路径)original_img = imread('ex2.jpg'); % 如果图像是彩色的,转换为灰度图if size(original_img, 3) == 3    original_img = rgb2gray(original_img);end% 转换为double类型以便计算A = double(original_img);% 显示原始图像figure('Position', [100, 100, 1200, 800]);subplot(2, 3, 1);imshow(original_img, []);title('原始图像', 'FontSize', 12);xlabel(['尺寸: ', num2str(size(A, 1)), '×', num2str(size(A, 2))]);%% 2. 对图像矩阵进行SVD分解fprintf('正在进行SVD分解...\n');[U, S, V] = svd(A);% 获取奇异值singular_values = diag(S);total_singular_values = length(singular_values);fprintf('SVD分解完成!总奇异值个数: %d\n', total_singular_values);%% 3. 使用不同数量的奇异值重建图像k_values = [1, 5, 20, 50, 100]; % 选择不同的k值进行测试% 计算原始图像需要存储的元素数量original_elements = numel(A);fprintf('原始图像需要存储的元素数量: %d\n', original_elements);for i = 1:length(k_values)    k = k_values(i);        % 使用前k个奇异值重建图像    A_compressed = U(:, 1:k) * S(1:k, 1:k) * V(:, 1:k)';        % 计算压缩比    compressed_elements = size(U, 1)*k + k + size(V, 1)*k;    compression_ratio = compressed_elements / original_elements;        % 显示重建后的图像    subplot(2, 3, i+1);    imshow(uint8(A_compressed), []);    title(sprintf('k = %d (压缩比: %.1f%%)', k, compression_ratio*100), 'FontSize', 10);    xlabel(sprintf('需要存储: %d个元素', compressed_elements));        % 计算并显示PSNR(峰值信噪比)来衡量重建质量    mse = mean((A(:) - A_compressed(:)).^2);    psnr_val = 20*log10(255/sqrt(mse));    text(10, 20, sprintf('PSNR: %.1f dB', psnr_val), 'Color', 'white', 'FontSize', 8, 'BackgroundColor', 'black');end%% 4. 绘制奇异值衰减曲线figure('Position', [100, 500, 800, 400]);% 绘制奇异值subplot(1, 2, 1);semilogy(1:min(100, total_singular_values), singular_values(1:min(100, total_singular_values)), 'b-', 'LineWidth', 2);xlabel('奇异值序号');ylabel('奇异值大小(对数尺度)');title('前100个奇异值');grid on;% 绘制累积能量subplot(1, 2, 2);cumulative_energy = cumsum(singular_values.^2) / sum(singular_values.^2);plot(1:min(100, total_singular_values), cumulative_energy(1:min(100, total_singular_values)), 'r-', 'LineWidth', 2);xlabel('使用的奇异值数量 (k)');ylabel('累积能量比例');title('信息保留程度 vs k值');grid on;% 标记几个关键点hold on;marker_k = [1, 5, 20, 50];for k = marker_k    if k <= length(cumulative_energy)        plot(k, cumulative_energy(k), 'ro', 'MarkerSize', 8, 'MarkerFaceColor', 'red');        text(k, cumulative_energy(k)-0.1, sprintf('k=%d\n%.1f%%', k, cumulative_energy(k)*100), ...             'HorizontalAlignment', 'center', 'FontSize', 8);    endend%% 5. 显示压缩效果对比fprintf('\n=== 压缩效果总结 ===\n');fprintf('k值\t压缩比\t\t信息保留\n');for k = [1, 5, 20, 50, 100]    if k <= total_singular_values        compressed_elements = size(U, 1)*k + k + size(V, 1)*k;        compression_ratio = compressed_elements / original_elements;        info_retained = cumulative_energy(k) * 100;        fprintf('%d\t%.2f%%\t\t%.1f%%\n', k, compression_ratio*100, info_retained);    endendfprintf('\n程序运行完成!\n');

微尘 1 0 2026-04-08

如何在北太天元中用bex编译包含Matlab接口调用的C代码

现有的C代码里调用的是matlab的接口,需要改为调用北太天元的接口,如:#include "bex/bex.h"void bexFunction()bxArray……方法如下1.新建<mex.h>头文件,与要编译的C文件放同一个文件夹中

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define mxIsNaN    isnan

#define mxCreateDoubleMatrix          bxCreateDoubleMatrix
#define mxCreateLogicalMatrix         bxCreateLogicalMatrix
#define mxCreateStructMatrix          bxCreateStructMatrix
#define mxCreateCellMatrix            bxCreateCellMatrix
#define mxCreateSparse                bxCreateSparse
#define mxCreateString                bxCreateString
#define mxCreateCharMatrixFromStrings bxCreateCharMatrixFromStrings
#define mxCreateDoubleScalar          bxCreateDoubleScalar

#define mxAddField bxAddField
#define mxSetField bxSetField
#define mxSetCell  bxSetCell

#define mxGetNumberOfElements  bxGetNumberOfElements
#define mxGetNumberOfFields    bxGetNumberOfFields
#define mxGetDoubles           bxGetDoubles
#define mxGetLogicals          bxGetLogicals
#define mxGetField             bxGetField
#define mxGetFieldNameByNumber bxGetFieldNameByNumber
#define mxGetCell              bxGetCell

#define mxGetN     bxGetN
#define mxGetM     bxGetM
#define mxGetNzmax bxGetNzmax
#define mxGetJc    bxGetJc
#define mxGetIr    bxGetIr
#define mxGetPr    bxGetPr

#define mexErrMsgTxt    bxErrMsgTxt

#ifdef _WIN32
#define mystrcmp _stricmp
#else
#include <strings.h>
#define mystrcmp strcasecmp
#endif
2.在北太天元命令窗口输入“bex 文件名.c”,编译对应的C文件。编译后会出现以下对话并在文件夹下生成“文件名.bexw64”等文件,例如注意:1)需安装C语言编译器,建议 VS 2019。2)编译过程中出现乱码,是因为系统显示字体的原因。在系统“语言和区域”设置中,打开“使用Unicode UTF-8提供全球语言支持”选项,如下图所示,再次运行bex 文件名.c,显示正常。

Python 及 SymPy 插件存在的几点问题

1. Python 中的复数如何和北太天元中的复数相互转化. 这一点在 MATLAB 中也是没有相应的函数将 Python 的复数转化为 MATLAB 函数的复数, MATLAB 的机制是只要对 Python 的复数做了运算, 就自动转化为 MATLAB 的复数, 如 py.complex(1, 1) + 0 得到的就是 MATLAB 中的复数 1.0 + 1.0i.2. 创建复数符号变量, sym(1+i) 不可行, 可行的两种方式, 直接使用符号虚数单位 sp.I 如 1 + sp.I, 另一种使用简化函数 sp.simplify() 或者封装好的 symsimplify(), 如 symsimplify(1+i);3. SymPy 插件创建的符号变量不支持绝对值函数 abs(sym('x')).4. SymPy 插件在调用 lambdify 函数时报错, 'NoneType' object has no attribute 'f_locals'. 示例如下:

load_plugin SymPy
sp = sympy_sp;
x = sym('x');
y = sin(x);
f = sp.lambdify(x, y)

邱彼郑楠 5 0 2025-12-06

copyfile 函数在复制文件时出现的问题及可行的解决方式

copyfile(source, destination) 用于复制文件. 在使用过程中存在以下几个问题1. 如果 destination 不存在, 提示错误使用 copyfile 函数, 文件 destination 不存在, 这是 Windows 和 Linux 均存在的问题.2. 创建一个空文件 destination, 此时再调用 copyfile 复制文件, Windows 平台可以成功复制, Linux 平台报错cp: /opt/Baltamatica/lib/libattr.so.1: version `ATTR_1.3' not found (required by cp)cp: /opt/Baltamatica/lib/libselinux.so.1: no version information available (required by cp)cp: /opt/Baltamatica/lib/libselinux.so.1: no version information available (required by cp)目前尝试的解决方案, 将系统的 libattr.so.1 和 libselinux.so.1 文件链接到 /opt/Baltamatica/lib 中sudo mv /opt/Baltamatica/lib/libattr.so.1 /opt/Baltamatica/lib/libattr.so.1.baksudo mv /opt/Baltamatica/lib/libselinux.so.1 /opt/Baltamatica/lib/libselinux.so.1.baksudo ln -s /usr/lib/x86_64-linux-gnu/libattr.so.1 /opt/Baltamatica/lib/libattr.so.1sudo ln -s /usr/lib/x86_64-linux-gnu/libselinux.so.1 /opt/Baltamatica/lib/libselinux.so.1重新运行北太天元后可以复制已存在的文件.

邱彼郑楠 1 0 2025-12-06

subplot和imshow结合使用的问题

问题:subplot和imshow结合使用时无法将图像显示在图形窗口中。该如何解决?

鱼儿 4 0 2025-11-26

函数的最小值点为0时却无法求出为0?

变量里是-0.0000000000000009, 改x的次数还会导致误差变[很]大

Frtgl 2 0 2025-11-08

北太天元在处理二次规划问题时存在不可退出的问题

在使用北太天元处理二次规划问题时,特定条件下,北太天元会持续运行(卡死)且无法退出(无论怎么按退出键都没用),请问这是什么原因?

% 投资组合优化示例 - 3个股票 + 储蓄% 基于Markowitz投资组合理论clear; clc; close all;%% 输入数据% 假设我们有3个股票的预期收益率(年化)expected_returns = [0.08; 0.23; 0.15];  % 股票1, 股票2, 股票3% 假设储蓄的无风险利率risk_free_rate = 0.03;  % 3% 年化收益率% 协方差矩阵(反映股票间的风险关系)covariance_matrix = [0.04   0.01   0.02;  % 股票1的方差和协方差0.01   0.09   0.03;  % 股票20.02   0.03   0.16]; % 股票3%% 有效前沿计算n_assets = length(expected_returns);n_points = 100;% 生成不同的目标收益率target_returns = linspace(min(expected_returns), max(expected_returns), n_points);% 预分配存储空间portfolio_risks = zeros(n_points, 1);portfolio_weights = zeros(n_points, n_assets);% 计算有效前沿for i = 1:n_pointstarget_return = target_returns(i);% 使用二次规划求解最小风险组合H = 2 * covariance_matrix;  % 二次项系数矩阵f = zeros(n_assets, 1);     % 线性项系数向量% 约束条件:权重和为1,预期收益率等于目标值Aeq = [ones(1, n_assets); expected_returns'];beq = [1; target_return];% 边界条件:不允许卖空lb = zeros(n_assets, 1);ub = ones(n_assets, 1);% 求解二次规划问题options = optimoptions('quadprog', 'Display', 'off');[weights, ~, exitflag] = quadprog(H, f, [], [], Aeq, beq, lb, ub, [], options);if exitflag > 0portfolio_weights(i, :) = weights';portfolio_risks(i) = sqrt(weights' * covariance_matrix * weights);elseportfolio_risks(i) = NaN;endend%% 计算包含储蓄的最优组合(资本市场线)% 超额收益率excess_returns = expected_returns - risk_free_rate;% 计算切点组合tangent_weights = covariance_matrix \ excess_returns;tangent_weights = tangent_weights / sum(tangent_weights);% 切点组合的收益率和风险tangent_return = tangent_weights' * expected_returns;tangent_risk = sqrt(tangent_weights' * covariance_matrix * tangent_weights);% 资本市场线斜率cml_slope = (tangent_return - risk_free_rate) / tangent_risk;%% 可视化结果figure('Position', [100, 100, 1200, 500]);% 子图1:有效前沿和资本市场线subplot(1,2,1);plot(portfolio_risks, target_returns, 'b-', 'LineWidth', 2);hold on;% 绘制资本市场线cml_risks = linspace(0, max(portfolio_risks)*1.2, 100);cml_returns = risk_free_rate + cml_slope * cml_risks;plot(cml_risks, cml_returns, 'r--', 'LineWidth', 2);% 标记切点plot(tangent_risk, tangent_return, 'ro', 'MarkerSize', 8, 'MarkerFaceColor', 'red');% 标记无风险资产plot(0, risk_free_rate, 'go', 'MarkerSize', 8, 'MarkerFaceColor', 'green');xlabel('风险(标准差)');ylabel('预期收益率');title('有效前沿和资本市场线');legend('有效前沿', '资本市场线', '切点组合', '无风险资产', 'Location', 'southeast');grid on;% 子图2:切点组合权重subplot(1,2,2);bar(tangent_weights);xlabel('资产');ylabel('权重');title('切点组合权重分配');set(gca, 'XTickLabel', {'股票1', '股票2', '股票3'});grid on;%% 输出结果fprintf('=== 投资组合优化结果 ===\n');fprintf('无风险利率: %.2f%%\n', risk_free_rate*100);fprintf('\n各股票预期收益率:\n');for i = 1:n_assetsfprintf('股票%d: %.2f%%\n', i, expected_returns(i)*100);endfprintf('\n切点组合信息:\n');fprintf('预期收益率: %.2f%%\n', tangent_return*100);fprintf('风险(标准差): %.2f%%\n', tangent_risk*100);fprintf('夏普比率: %.4f\n', (tangent_return - risk_free_rate) / tangent_risk);fprintf('\n切点组合权重:\n');for i = 1:n_assetsfprintf('股票%d: %.2f%%\n', i, tangent_weights(i)*100);endfprintf('\n投资建议:\n');fprintf('投资者可以根据自己的风险偏好,在无风险资产和切点组合之间分配资金。\n');fprintf('风险厌恶型投资者可以增加储蓄比例,风险偏好型投资者可以增加股票组合比例。\n');%% 计算不同风险偏好下的最优组合fprintf('\n=== 不同风险偏好下的投资建议 ===\n');risk_tolerances = [0.1, 0.3, 0.5, 0.7, 0.9];  % 风险承受能力for i = 1:length(risk_tolerances)alpha = risk_tolerances(i);  % 投资于切点组合的比例savings_weight = 1 - alpha;  % 储蓄比例portfolio_return = savings_weight * risk_free_rate + alpha * tangent_return;portfolio_risk = alpha * tangent_risk;fprintf('\n风险承受能力 %.0f%%:\n', risk_tolerances(i)*100);fprintf('  储蓄比例: %.1f%%\n', savings_weight*100);fprintf('  股票组合比例: %.1f%%\n', alpha*100);fprintf('  预期收益率: %.2f%%\n', portfolio_return*100);fprintf('  预期风险: %.2f%%\n', portfolio_risk*100);end

匿名 2 0 2025-10-07

软件闪退

Windows 4.2.1 版本在命令行窗口输入 hold、isnan、isinf 等直接闪退;LInux 4.2.1 版本在命令行窗口输入 isnan、isinf 等直接闪退。

邱彼郑楠 2 0 2025-10-02

contains函数在Windows4.2.1版本运行错误

contains(str, pat) 函数用于判断字符串 str 中是否包含 pat 子串,但在 Windows 4.2.1 版本中,contains 像是被一个用于几何包含的函数给覆盖了经过测试,该函数在 Linux 4.2.1 版本和 Windows 4.2.0 版本中都能正常运行。

邱彼郑楠 2 0 2025-10-01

教育版许可证授权后部分工具箱无法加载,且快速反馈无法提交

版本为4.2.0,使用我的大学提供的授权许可证激活后,一些工具箱功能无法加载,提示“加载失败”;同时命令行提示“工具箱有新版本, 请联系运营商.”使用内置的快速提交模块,点击提交按钮无法提交

zeja 2 0 2025-09-23

PDE 有限元的计算速度慢,能否提速?

我正在使用 Deepin  Linux 系统,安装了北太天元的计算软件V4.2.0 版,成功安装,并能运行,很好!但有个问题,就是我运行软件自带的例子PDF Examples 解PDF使用有限元方法时,计算得太慢了。能否优化提速一下?我的电脑是联想工作站 i7 cpu , 32G 内存。但例子程序运行得很慢,就是网格化时,很耗时。谢谢!

天佑 0 0 2025-09-18

if 语句条件表达式后,未换行时不能再接其他语句

您好,在使用过程中我发现北太天元 4.2.0 不支持在 if 语句的条件表达式后未换行的情况下再接其他语句,如

if true fprintf('test'); end
在 MATLAB 中可正常运行,但在 Baltamatica 中报错
语法错误, 此处不应该输入 Identifier
若改成
if true
fprintf('test'); end
则可正常运行,也许与 parser 有关。不知这是否是一个可以修复的问题。谢谢您!

mjunhy 1 0 2025-09-16

无法用鼠标拖拽改变主窗口大小

您好,电脑:ThinkpadT14p,操作系统:win11,版本:北太天元4.1.1问题:无法用鼠标拖拽来改变主窗口宽度,但是可以改变高度,即左右拖动不行,上下拖动可以,不知道是什么原因。

catinlbb 3 0 2025-08-19

addnode函数与matlab返回结果不一致

addnode函数与matlab返回结果不一致,目前是返回布尔值,matlab返回图对象,希望可以支持返回两种值,布尔值(保留速度提升和python用法一致)和图对象(兼容matlab)。

匿名 1 0 2025-08-06

点击导航栏里的文件会卡死

点击导航栏里的文件 左键右键都会直接卡死无响应 而且每次点击进来的界面都是第一次打开时点开的两个文件

iantsing 1 0 2025-07-09

详细变量弹出时横向滚动条没有只有最大化时有

详细变量弹出时横向滚动条没有只有最大化时有

杰克王 1 0 2025-07-06

打开问题和使用时闪退问题

问题打字发不出来只能发截图

baoyuxuan 1 0 2025-05-31

如何在m文件中保存plot绘制的图像

百度提示使用saveas 或者exportgraphics函数,但是没有找到这些函数,在balta中要如何实现

fnno 1 0 2025-04-22