我遇到以下代码问题:
.
.
.
a=zeros(1000,ctimes);
a1=zeros(1000,ctimes);
hold all
for i=num1:num2;
colors=Lines(i);
switch phantom
case 1
path=['E:\filename\'];
path1=['E:\filename2\'];
n=['S',num2str(emt),'_',num2str(i),'.m'];
d=load([path,name]);
a(:,i)=complex(d(:,2),d(:,3)));
n1=['S',num2str(emt),'_',num2str(i),'.m'];
d1=load([path1,name1]);
a1(:,i)=complex(d1(:,2),d1(:,3)));
问题是无法定义a(:,i)
。虽然没有问题,或者complex(d1(:,2),d1(:,3)))
,任何专家团体都可以帮助我吗?!
答案 0 :(得分:1)
您确定要正确形成文件名吗?您正在创建变量n
,但在形成路径时使用变量name
。以下是一些建议的调试步骤:
1)确保文件路径正确形成:
filePath = fullfile(path, name);
disp(filePath);
fullfile
函数连接文件路径的元素& name,并负责使用正确的文件路径分隔符(适用于可移植代码,阻止您必须记住在文件路径的末尾添加/
或\
等)。
2)检查d
是否正确加载:
clear d;
d = load(filePath);
disp(size(d));
3)检查您计算的复杂数量的大小,然后再将其分配给a(:,i)
:
temp = complex(d(:,2), d(:,3));
disp(size(temp));
当您完成这些操作时,您应该已经找到了问题(temp
的尺寸应该是[1000 1]
以匹配a(:,i)
的尺寸,当然)。< / p>
另外,您应该避免使用i
作为变量名,尤其是当您使用复数时,因为它的内置值为sqrt(-1)
。因此,c = a + i * b;
会创建一个复数(a,b)并将其放入c - 直到您更改i
的含义。一个简单的解决方案是使用ii
。顺便说一句,j
也是如此。这是Matlab中不幸的设计决策之一,您可以覆盖内置的值......