matlab中怎么实现三维图,维度不一致,什么时候加点什么时候不加点?(matlab 出现矩阵维度不一致的情况)
matlab 出现矩阵维度不一致的情况
^错误出现在倒数第二行:z=(Y-p)^2-4;
错误原因有两个:
Y和p的维度不一致,Y是二维矩阵,p是列向量,无法直接相减
数乘的平方运算需要使用.^
对于问题1需要根据你的物理意义修改,因为我不了解你的问题背景,所以简单修改为:
将p矩阵的所有元素设置为3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
clc;
clear all;
t=0:0.0001:0.2;
d=5;%进给率
c=10;%工件旋转频率
R=45;%初始刀尖圆弧中心与工件中心距离
w=2*pi*c;%角频率
p=R-d*c*t;%极半径
p_=p-2:0.1:p+2;
[X,Y]=meshgrid(t,p_);
x=Y.*cos(20*pi*X);%x方向坐标
y=Y.*sin(20*pi*X);%y方向坐标
p=ones(size(Y))*3; % 此处将p修改为全部元素都是3,具体可根据你的需求修改
z=(Y-p).^2-4;%z方向坐标
mesh(x,y,z);
matlab矩阵维度不一样怎么办?
解决的办法可以用linspace函数获得等距的向量组。其使用格式
linspace(X1, X2, N)
对于本案,可以这样处理
x1=linspace(0,r1,100) %此处的100可以根据需要调整
x2=linspace(0,r2,100)
x3=linspace(0,r1+r2,100)
MATLAB画函数图,矩阵维度不同不能加减怎么办
其实不是很明白你所指的维度不同是什么意思?
如果是指x,y的长度不同,那是可以画出来的。
x=0:0.1:1;
y=0:0.1:2;
[X,Y]=meshgrid(x,y);
z=3*X+4*X.*Y;
mesh(X,Y,z);
如果你指的维度是指X是1维,Y是二维。。。。那我就呵呵了,这是什么函数啊
matlab报错矩阵维度不一致如何解决?
matlab中矩阵维数不一致,可能是之前定义了一个矩阵,后来又定义了一个同名矩阵,2个矩阵维数不同,混用在一起了。
还可能矩阵未定义。
MATLAB错误记录:错误使用 cat 串联的矩阵的维度不一致
今天想用matlab读取一个数据文件。用importdata读入后照例储存成了cell类型。但当我想用cell2mat将其转化为矩阵时却出现了这个问题:
错误使用 cat 串联的矩阵的维度不一致
经检查后发现,cell数组中每个元胞中存储的格式并非double,而是char数组。而且每一行char的长度不一致,从而引发了这个错误。于是我首先想到的解决思路是:
用char()函数把每个元胞的长度统一。
也确实统一了。但随后当我想用str2num()将char数组转换为数字时,却又出现了另一个问题:
y = str2num(x)返回值为空值[]
这很奇怪,于是我检查了一下我的每行字符串数组。发现它存在着古怪的格式问题。举例来说,在原始文件中数据本来是这样的:0.00
但是导入到matlab里以后就变成了了这样:0 . 0 0
数字之间存在的看似空格的空白字符导致str2num()函数无法正常使用。
在这种情况下,不得不对这些空格进行删除。但我的数据量很大,手动删除是不现实的。因此不得已使用了这个函数命令:
y = strrep(x,’ ‘,’’);
结果发现,很奇怪的是,这些空格依然存在。我自己随便编了一个字符串调用这个函数,结果证明函数是可以使用的。可见,数据中这些看似空格的空白字符实际上并非空格。经过试验,他们也不是制表符。由于时间有限,我最终并没有去确认这些空白字符到底是什么。只是简单地将字符串中其中一个空白字符赋给了一个变量作为样例。操作过程大致如下:
d = x(5);
y = strrep(x,x(5),‘’)
结果证明这样做是有效的