You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB技术求助:实现func=y*x(n)+z*x(n)的代码与绘图问题

解决MATLAB自定义序列计算与绘图问题

嘿,我来帮你一步步搞定这个MATLAB的问题!你遇到的创建数组、计算函数值和绘图的问题其实是连贯的,咱们逐个拆解解决:

1. 先搞定自定义序列x(n)

MATLAB里的数组就是用来存储序列的,创建方式很灵活:

  • 如果是手动指定每个位置的取值,直接用方括号定义就行,比如你想要x(1)=5、x(2)=3、x(3)=7,就写:
    x = [5, 3, 7]; % 这里n的范围是1到3,对应数组的索引
    
  • 如果是生成有规律的序列(比如从1到10的整数),可以用冒号运算符快速生成:
    x = 1:10; % 生成x(1)=1, x(2)=2,...x(10)=10的序列
    
    记住MATLAB的数组索引是从1开始的,这和Python、C这些语言不一样,别搞混啦。

2. 计算func的值

你的函数func = y*x(n) + z*x(n)可以简化成func = (y+z)*x(n),这样计算更高效。要注意的是,MATLAB里对数组做逐元素运算时,要用点运算符(比如.*),避免触发矩阵乘法:

% 先自定义参数y和z的值
y = 2;
z = 3;

% 对每个n位置的x(n)计算func,用.*保证逐元素运算
func = (y + z) .* x;

这样得到的func数组和x长度一样,每个元素对应n位置的计算结果。

3. 绘制每个位置的点

绘图的关键是让横坐标对应位置n,纵坐标对应序列值。用plot函数就能实现,还可以自定义点的样式:

% 创建新的绘图窗口
figure;

% 绘制x(n)的点:横坐标是1到length(x)(对应n的位置),纵坐标是x,用红色圆点标记
plot(1:length(x), x, 'ro', 'MarkerSize', 8);
hold on; % 保持当前图窗,方便叠加绘制func的点

% 绘制func的点:用蓝色方块标记
plot(1:length(func), func, 'bs', 'MarkerSize', 8);

% 添加标签和标题,让图更清晰
xlabel('位置n');
ylabel('取值');
title('x(n)与func的对应点');
legend('x(n)', 'func'); % 显示图例区分两个序列
grid on; % 打开网格线,方便看坐标

完整示例代码

把上面的步骤整合起来,完整代码如下:

% 1. 自定义序列x(n)
x = [5, 3, 7, 2]; % 手动指定x(1)到x(4)的值

% 2. 定义参数y和z
y = 2;
z = 3;

% 3. 计算func
func = (y + z) .* x;

% 4. 绘图
figure;
plot(1:length(x), x, 'ro', 'MarkerSize', 8);
hold on;
plot(1:length(func), func, 'bs', 'MarkerSize', 8);

xlabel('位置n');
ylabel('取值');
title('x(n)与func的对应点');
legend('x(n)', 'func');
grid on;

运行这段代码后,你就能看到每个n位置对应的x(n)和func的点啦!如果需要调整序列或者参数,直接修改对应的变量就行。

内容的提问来源于stack exchange,提问作者Crystal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:12:10